使用CreateProcess创建子进程,保存hChildProcess,然后调用
if (WaitForSingleObject(hChildProcess,INFINITE) == WAIT_FAILED)
{
//error handler
}
INFINITE表示一直等待,也可用一个具体的值表示等待时间
if (WaitForSingleObject(hChildProcess,INFINITE) == WAIT_FAILED)
{
//error handler
}
INFINITE表示一直等待,也可用一个具体的值表示等待时间
解决方案 »
- 请问这个是什么工具阿?在什么地方有下载?
- 不容易呀,软件经过一年的开发与测试,个人版终于发布了。
- 为了实现远程桌面控制,如何高效率传输屏幕画面?我正着急呢!高手请指点啊!!!
- 调用windows Api 时,如何进行异常检查?
- 请问如何获得硬件的序列号?
- 用VC如何实现当点上一个如树形的节点时,点击鼠标右键,出现一个菜单,再按菜单上的条目,它就会出现一个建立的条目 。
- 钩子高手请进!
- 有什么办法可以得到鼠标选定的文件的名称?
- 关于对话框中菜单条的问题。
- MFC串口通信数据丢失/不完整
- 请问:在dll中如何获取自己的路径?
- 1000分求解插值算法的问题:http://www.csdn.net/expert/topicview1.asp
STARTUPINFO si;
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = 0;
si.cbReserved2 = 0;
si.lpReserved2 = NULL;
BOOL bres = CreateProcess(NULL,"test a.txt b.txt",NULL,NULL,false,
NORMAL_PRIORITY_CLASS,
NULL,NULL,&si,&pi);
if(bres==false)
{
AfxMessageBox("CreateProcess failed");
}
else
{
CloseHandle(pi.hThread);
DWORD dwret=WaitForSingleObject(pi.hProcess, 1000*30);
switch(dwret)
{
case WAIT_OBJECT_0:
DWORD dwexitcode;
bres = GetExitCodeProcess(pi.hProcess,&dwexitcode);
TCHAR exitmsgbuf[1024];
if(bres)
{
wsprintf(exitmsgbuf,"exit code:%d",dwexitcode);
}
else
wsprintf(exitmsgbuf,"exit code failed to return"); AfxMessageBox(exitmsgbuf);
break;
default:
AfxMessageBox("exit for other reason");
}
CloseHandle(pi.hProcess);
}