CreateProcess和CreateProcessA有什么区别,VC ++ 2008中还有其他替代方案吗?
我还有一个问题,即我使用CreateProcessA函数,这在一个系统中运行良好,但在其他系统中失败。
当我使用CreateProcess时,我得到的错误无法将2个参数从'CHAR [40]'转换为'LPWSTR'我处于unicode模式
答案 0 :(得分:7)
首先,CreateProcess是一个在CreateProcessA和CreateProcessW之间切换的宏,它分别采用ANSI或Unicode字符串。这取决于您的项目构建设置(字符集项目属性),Unicode与多字节。通常,您希望使用Unicode,因为这样可以实现全球化并添加允许更多支持语言的选项。
从char转换为LPCWSTR的投诉显示它期望一种WSTR,或宽字符串或unicode字符串。解决方法是使用_T(“blahblah”)宏声明您的字符。
答案 1 :(得分:3)
CreateProcess
与CreateProcessA
(“ANSI”)或CreateProcessW
(“宽字符”)相同,具体取决于您是否在没有或使用unicode的情况下编译代码选项已启用。
区别在于您作为参数传递的字符串是ANSI(8位字符)还是unicode(16位字符)字符串。
还有其他选择,例如ShellExecuteEx
。