我正在尝试创建一个使用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
答案 0 :(得分:7)
这一行错了:
(LPWSTR)"C:\\Program Files\\Opera\\Opera.exe"
LPWSTR
是wchar_t*
的typedef。所以你要将一个普通的字符串(字符数组,它将衰减为const char*
)转换为wchar_t*
。最终结果可能甚至没有以空值终止!
使用CreateProcessA
并删除演员表,或使用宽字符串:
L"C:\\Program Files\\Opera\\Opera.exe",