Dos窗口出现然后立即消失

时间:2017-04-14 12:29:21

标签: c++ cmd createprocess

当我运行下面的代码时,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;
}

1 个答案:

答案 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);  
相关问题