直接调用其生成的 exe 文件。可考虑的方法有:
1.使用 system 函数
2.使用 execl 或 execv 函数
3.使用 WinExec 函数
4.使用 CreateProcess 函数
5.使用 ShellExecuteEx 函数
system 函数和 execl、execv 函数不能控制程序窗口是否显示,我要的效果是不显示该 exe 程序的窗口,所以这两种方
法不予考虑。WinExec 函数不好控制主程序来等该 exe 程序的结束,所以放弃。CreateProcess 函数是新建一个进程,
所以,你必须人为地控制该进程的生死,不如 ShellExecuteEx 方便,所以最终我选择的是 ShellExecuteEx 函数。程序
如下:
SHELLEXECUTEINFO% ShExecInfo% =% {0};%%
%ShExecInfo.cbSize% =% sizeof(SHELLEXECUTEINFO);%%
%ShExecInfo.fMask% =% SEE_MASK_NOCLOSEPROCESS;%%
%ShExecInfo.hwnd% =% NULL;%%
%ShExecInfo.lpVerb% =% _T("open");%%
%ShExecInfo.lpFile% =% _T("c4.5.exe");%%%%%%%%%%%%%%%%%%%%%%%%%%
%ShExecInfo.lpParameters% =% _T("-f train");%%%%%%%%%%%%%%
%ShExecInfo.lpDirectory% =% NULL;%%
%ShExecInfo.nShow% =% SW_HIDE;%%
%ShExecInfo.hInstApp% =% NULL;%%%%%%%%%%%%%%
%ShellExecuteEx(&ShExecInfo);%
%WaitCursorBegin();
%WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
%WaitCursorEnd();
SHELLEXECUTEINFO 和 ShellExecuteEx 的使用
在日常工作中用到的一些知识,很久没有总结过,前几日参加一个会议,很是无聊。自己思索着自己这两年来所做过的
东西,写着写着居然也写下了 100 个知识点。想把它一条一条总结下来,动笔总不是很容易。就拿这篇文章作为第一篇。
很多东西取之于网络,也有一些自己的心得。才疏学浅,就当一个知识梳理的过程吧。
第一篇 SHELLEXECUTEINFO和 ShellExecuteEx 的使用
使用 SHELLEXECUTEINFO 和 ShellExecuteEx,我也主要是在 cab 包的安装时使用的。基本上是这样使用的,如
下:
SHELLEXECUTEINFOShellInfo;
memset(&ShellInfo, 0,sizeof(ShellInfo));
ShellInfo.cbSize=sizeof(ShellInfo);
ShellInfo.hwnd=NULL;
评论2