当我运行下面的代码时,dos窗口会立即显示然后消失。 我想要的是窗口将停留并等待用户的下一个命令输入。 如果我想保持窗口显示,我应该怎么处理startupInfo.hStdInput,我必须在我的项目中使用createProcess而不是winexec等。
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpComLine,
int nCmdShow)
{
SECURITY_ATTRIBUTES secAttr;
HANDLE hRead,hWrite;
secAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
secAttr.lpSecurityDescriptor = NULL;
secAttr.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&secAttr,0))
{
return FALSE;
}
char command[1024];
strcpy(command,"ping 192.168.0.1");
STARTUPINFO startupInfo;
PROCESS_INFORMATION processInfo;
startupInfo.cb = sizeof(STARTUPINFO);
GetStartupInfo(&startupInfo);
startupInfo.hStdError = hWrite;
startupInfo.hStdOutput = hWrite;
startupInfo.hStdInput = hRead;
startupInfo.lpTitle = "CMD";
if (!CreateProcess(NULL, command,NULL,NULL,TRUE,NULL,NULL,NULL,&startupInfo,&processInfo))
{
MessageBox(NULL, "Failed", NULL, MB_OK);
CloseHandle(hWrite);
CloseHandle(hRead);
return FALSE;
}
CloseHandle(hWrite);
CloseHandle(hRead);
return 0;
}
答案 0 :(得分:0)
如果问题是流程窗口立即关闭,您可能应该添加pause
...以便能够查看ping
命令的结果..
现在,我绝不是c++
专家......但我建议,尝试以下几行代码......
CreateProcess(
"c:\\windows\\system32\\cmd.exe",
"/k ping 192.168.0.1 && pause && exit",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&startupInfo,&processInfo);