调用进程时程序停止运行

时间:2009-12-01 02:40:00

标签: c++ windows

我正在尝试创建一个使用CreateProcess调用另一个进程的程序。遇到一些问题后,我将程序更改为只打开一个已知程序:

if( !CreateProcess( (LPWSTR)"C:\\Program Files\\Opera\\Opera.exe",   // No module name (use command line)
    NULL,                       ,
            // Command line
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    FALSE,          // Set handle inheritance to FALSE
    0,              // No creation flags
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory 
    &si,            // Pointer to STARTUPINFO structure
    &pi )           // Pointer to PROCESS_INFORMATION structure
) 

我在msdn中找到了这个例子,但是每次运行我的程序时,windows(Vista)都显示错误消息:程序停止运行...

有人知道这是什么问题吗?

此致 Leandro Lima

1 个答案:

答案 0 :(得分:7)

这一行错了:

(LPWSTR)"C:\\Program Files\\Opera\\Opera.exe"

LPWSTRwchar_t*的typedef。所以你要将一个普通的字符串(字符数组,它将衰减为const char*)转换为wchar_t*。最终结果可能甚至没有以空值终止!

使用CreateProcessA并删除演员表,或使用宽字符串:

 L"C:\\Program Files\\Opera\\Opera.exe",