假設(shè)需要執(zhí)行的程序如下:
int main(int argc, char* argv[])
{
return argc;
}
執(zhí)行它,并取得其返回值,我寫了一個(gè)函數(shù)如下:
DWORD WinExecAndWait32( LPCTSTR lpszAppPath, // 執(zhí)行程序的路徑
LPCTSTR lpParameters, // 參數(shù)
LPCTSTR lpszDirectory, // 執(zhí)行環(huán)境目錄
DWORD dwMilliseconds) // 最大等待時(shí)間, 超過這個(gè)時(shí)間強(qiáng)行終止
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = lpszAppPath;
ShExecInfo.lpParameters = lpParameters;
ShExecInfo.lpDirectory = lpszDirectory;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
// 指定時(shí)間沒結(jié)束
if (WaitForSingleObject(ShExecInfo.hProcess, dwMilliseconds) == WAIT_TIMEOUT)
{ // 強(qiáng)行殺死進(jìn)程
TerminateProcess(ShExecInfo.hProcess, 0);
return 0; //強(qiáng)行終止
}
DWORD dwExitCode;
BOOL bOK = GetExitCodeProcess(ShExecInfo.hProcess, &dwExitCode);
ASSERT(bOK);
return dwExitCode;
}
我上傳了兩個(gè)工程,希望對(duì)大家有所幫助!
http://www.shnenglu.com/Files/humanchao/ExecExe.rar
posted on 2007-12-28 11:20
胡滿超 閱讀(5965)
評(píng)論(4) 編輯 收藏 引用