CreateProcess和CreateProcessA有什么区别?

时间:2010-06-17 10:54:17

标签: visual-c++

CreateProcess和CreateProcessA有什么区别,VC ++ 2008中还有其他替代方案吗?

我还有一个问题,即我使用CreateProcessA函数,这在一个系统中运行良好,但在其他系统中失败。

当我使用CreateProcess时,我得到的错误无法将2个参数从'CHAR [40]'转换为'LPWSTR'我处于unicode模式

2 个答案:

答案 0 :(得分:7)

首先,CreateProcess是一个在CreateProcessA和CreateProcessW之间切换的宏,它分别采用ANSI或Unicode字符串。这取决于您的项目构建设置(字符集项目属性),Unicode与多字节。通常,您希望使用Unicode,因为这样可以实现全球化并添加允许更多支持语言的选项。

从char转换为LPCWSTR的投诉显示它期望一种WSTR,或宽字符串或unicode字符串。解决方法是使用_T(“blahblah”)宏声明您的字符。

答案 1 :(得分:3)

CreateProcessCreateProcessA(“ANSI”)或CreateProcessW(“宽字符”)相同,具体取决于您是否在没有或使用unicode的情况下编译代码选项已启用。

区别在于您作为参数传递的字符串是ANSI(8位字符)还是unicode(16位字符)字符串。


还有其他选择,例如ShellExecuteEx