CreateProcess无法正常工作

时间:2011-10-26 15:29:58

标签: c++ process createprocess

我遇到以下代码在C ++(VC ++控制台应用程序)中工作时遇到问题。它根本不会创建进程,但会打印出错误文本。

static void main(){
    char *hotkeyexe = "cmd";
    PROCESS_INFORMATION pi;
    STARTUPINFO si;

    if(!CreateProcess(hotkeyexe, "", 0, 0, 0, 0, 0, 0, &si, &pi))
        printf("error");
        scanf("%d");
    }
}

2 个答案:

答案 0 :(得分:3)

你需要将STARTUPINFO归零。

ZeroMemory(&si, sizeof(si));

答案 1 :(得分:1)

我引用MSDN

  

该功能不会使用搜索路径。此参数必须包含文件扩展名;没有默认的扩展名。

所以你不能只使用cmd。它将取决于你的工作目录是否有效。如果您使用完整路径,它将起作用。例如,这是我机器上的一个工作示例。

char *hotkeyexe = "c:\\Windows\\notepad.exe";
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));

if(!CreateProcess(hotkeyexe, "", 0, 0, 0, 0, 0, 0, &si, &pi))
    printf("error");
scanf("%d");