相关文章推荐
大气的苹果  ·  python中urllib.urlretri ...·  1 年前    · 
大气的海龟  ·  vsto excel ...·  2 年前    · 

调用exe 有诸如 ShellExecute(Ex) , System 之类的函数,本文以 ShellExecuteEx 为例子,调用exe,并等待其结束。

char ActiveCmd[ 200 ] ={ 0 };
sprintf(ActiveCmd, " %s %s " , argv[ 1 ]  , argv[ 2 ] );
printf( " %s\n " , ActiveCmd);

/** 转换char * ---> TCHAR  **/
int actcnt = MultiByteToWideChar(CP_ACP, NULL, ActiveCmd, - 1 , NULL, 0 );
TCHAR * pbuffer = new TCHAR[actcnt + 1 ];
memset(pbuffer, 0 , sizeof (pbuffer));
MultiByteToWideChar(CP_ACP, NULL, ActiveCmd, - 1 , pbuffer, actcnt);

SHELLEXECUTEINFO ShExecInfo = { 0 };
ShExecInfo.cbSize = sizeof (SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L " open " ; // 多种类别有 "explorer" "print" 等
ShExecInfo.lpFile = EXE_FILE; // exe 路径
ShExecInfo.lpParameters = pbuffer; // 参数
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE; //
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);

printf( " waiting... \n " );
WaitForSingleObject(ShExecInfo.hProcess, INFINITE); // 等待完成   第二个参数是超时时间(毫秒)超时后返回超时代码

delete pbuffer;

pbuffer = NULL;

也可以简单的调用:

::ShellExecute(NULL, NULL, EXE_PATH , pbuffer, NULL,SW_HIDE); // pbuffer 同上需要是 TCHAR*