我遇到以下代码在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");
}
}
答案 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");