【问题标题】:MFC Command Window CommandMFC 命令窗口命令
【发布时间】:2015-07-20 06:21:03
【问题描述】:

在 MFC 中,我想通过打开命令窗口并在打开记事本中执行命令来创建一个进程。
我发现这个试过它没有用

STARTUPINFO sInfo = {0};
sInfo.cb = sizeof(sInfo);
PROCESS_INFORMATION pInfo = {0};

CreateProcess("C:\\WINDOWS\\System32\\cmd.exe",""0,0,TRUE,
NORMAL_PRIORITY_CLASS,0,0,&sInfo,&pInfo);

【问题讨论】:

  • “它不起作用” 不是问题描述。问题描述必须包括预期行为以及观察到的行为。

标签: c++ mfc


【解决方案1】:

你没有告诉 cmd 做任何事情。试试这个:

CreateProcess(0, "C:\\WINDOWS\\System32\\cmd.exe /c notepad.exe", 0, 0, TRUE, 0, 0, 0, &sInfo, &pInfo);

但也许这更容易

ShellExecute(0, "open", "cmd.exe", "/C notepad.exe", 0, SW_HIDE);

甚至这个:

system("notepad.exe");

【讨论】:

    【解决方案2】:

    转到我们可以看到的MSDN文档,您没有指定第二个参数,即要执行的命令行。

    另一方面,第六个参数没有NORMAL_PRIORITY_CLASS 枚举项。你应该这样做:

    STARTUPINFO si = { sizeof(si) };   
    PROCESS_INFORMATION pi;   
    
    si.dwFlags = STARTF_USESHOWWINDOW;   
    si.wShowWindow = TRUE;  
    TCHAR cmdline[] =TEXT(" notepad.exe");   
    BOOL bRet = ::CreateProcess (   
        TEXT("C:\\WINDOWS\\System32\\cmd.exe"),  
        cmdline,    
        NULL,   
        NULL,   
        FALSE,   
        CREATE_NEW_CONSOLE,   
        NULL,   
        NULL,   
        &si,   
        &pi);   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2020-04-02
      • 2013-01-11
      • 1970-01-01
      相关资源
      最近更新 更多