请教!用createprocess创建进程后,等一段时间后,怎样判断进程是否退出?如果没有,进程的窗口标题是什么? xiexie! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用waitforsingleobject啊,具体你查一个MSDN帮助。 HWND mHwnd = NULL;BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam){ DWORD seekId = *(DWORD*)lParam; DWORD prcId = 0; GetWindowThreadProcessId(hwnd,&prcId); if(prcId == seekId)[ { do{ mHwnd = hwnd; hwnd = GetParent(hwnd); while(hwnd!=NULL); char title[128] = {0}; GetWindowText(mHwnd, title); AfxMessageBox(title,"进程主窗体标题"); }}PROCESS_INFORMATION pf;if( CreateProcess("你的程序名.exe",NULL, NULL,NULL,TRUE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,NULL, &pf)){ if( WAIT_TIMEOUT == WaitForSingleObject(pf.hProcess, 60000) ) {//程序没有退出 EnumWindows(EnumWindowsProc, pf.dwProcessId); }} WaitForSingleObject等待进程句柄的返回,可以一直等待,直到进程结束也可以设置一个超时,超过时间还没有进程结束,就输出一个超时信息 http://blog.csdn.net/jiangsheng/archive/2004/12/31/235432.aspx 另外建一个线程,专门等这个进程退出MainForm: DWORD dwThreadID; hWatchThread = ::CreateThread(NULL, 0, WaitForChildExit, NULL, 0, &dwThreadID);DWORD WINAPI WaitForChildExit(LPVOID lpParameter){ if (::WaitForSingleObject(MainForm->i_piProcInfo.hProcess, INFINITE) != WAIT_FAILED) MainForm->OnChildExit(); return 0;} 怎么获取本机的IP地址? 字符串转16进制度 VC2005如何添加事件和虚函数 有无软件可直接将文件从InstallShield打包后的CAB文件中提取出来? 在对话框上放了个编辑框,怎么一按回车就关闭了? 如何移动对话框? inline 函数的调用? dll调用问题 vcmfc过来领分。提倡vcmfc这种探索和热心精神 怎样产生目录对话框? 问个问题,如果用API设置Windows标准按钮的颜色 F1 F1 F1......给点思路
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD seekId = *(DWORD*)lParam;
DWORD prcId = 0; GetWindowThreadProcessId(hwnd,&prcId);
if(prcId == seekId)
[ {
do{
mHwnd = hwnd;
hwnd = GetParent(hwnd);
while(hwnd!=NULL);
char title[128] = {0};
GetWindowText(mHwnd, title);
AfxMessageBox(title,"进程主窗体标题");
}
}
PROCESS_INFORMATION pf;
if( CreateProcess("你的程序名.exe",NULL, NULL,NULL,TRUE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,NULL, &pf))
{
if( WAIT_TIMEOUT == WaitForSingleObject(pf.hProcess, 60000) )
{//程序没有退出
EnumWindows(EnumWindowsProc, pf.dwProcessId);
}
}
也可以设置一个超时,超过时间还没有进程结束,就输出一个超时信息
MainForm:
DWORD dwThreadID;
hWatchThread = ::CreateThread(NULL, 0, WaitForChildExit, NULL, 0, &dwThreadID);DWORD WINAPI WaitForChildExit(LPVOID lpParameter)
{
if (::WaitForSingleObject(MainForm->i_piProcInfo.hProcess, INFINITE) != WAIT_FAILED)
MainForm->OnChildExit();
return 0;
}