VC2005在Unicode环境下执行其他程序


VC2005在Unicode环境下执行其他程序

 

在VC2005下执行其他程序中使用了WinExe函数
CString strCMD=("cmd.exe");
WinExec(strCMD,SW_SHOW);
编译时出现错误
error C2664: 'WinExec' : cannot convert parameter 1 from 'CString' to 'LPCSTR'

说明:
LPCSTR就只能是一个ANSI字符串,在Unicode下CString是wchar_t
,每个字符占用2个字节
这里需要将wchar_t转化成char
经过以下处理编译成功

CString strCMD=_T("cmd.exe");
strCMD.ReleaseBuffer();
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,strCMD,-1,NULL,0,NULL,FALSE);
char *psText;
psText = new char[dwNum];
 
WideCharToMultiByte (CP_OEMCP,NULL,strCMD,-1,psText,dwNum,NULL,FALSE);
WinExec(psText,SW_SHOW);

以上程序在VC2005 MFC Unicode下调成成功。

你可能感兴趣的:(VC2005在Unicode环境下执行其他程序)