CreateProcess和CreateProcessA有什么区别?

pra*_*eep 5 visual-c++

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

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

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

Ste*_*anu 8

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

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


Chr*_*isW 7

CreateProcessCreateProcessA与(“ANSI”) 或(“宽字符”)相同CreateProcessW,具体取决于您编译代码时是否启用了 unicode 选项(基于 UNICODE 预处理器常量的定义)。

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


还有其他选择,例如ShellExecuteEx.