BOOL CreateProcessW: 无法将参数 2 从“char [4]”转换为“LPWSTR” 错误的解决方法

windows创建进程

编译环境:vs2013

代码如下所示:

#include "stdafx.h"
#include 


int main(int argc, char* argv[])
{
  //创建进程
 char szCommandLine[]="cmd";
 STARTUPINFO si={sizeof(si)};
 PROCESS_INFORMATION pi;
 si.dwFlags=STARTF_USESHOWWINDOW;
 si.wShowWindow=true;

 bool bRet=::CreateProcess(
  NULL,
  szCommandLine,
  NULL,
  NULL,
  FALSE,
  CREATE_NEW_CONSOLE,
  NULL,
  NULL,
  &si,
  &pi);
 if(bRet)
 {
  ::CloseHandle(pi.hThread);
  ::CloseHandle(pi.hProcess);
  printf("新进程的进程ID号:%d\n",pi.dwProcessId);
  printf("新进程的主线程的ID号:%d\n",pi.dwThreadId);

 }
}

此段代码出自:http://www.cnblogs.com/iamscree/articles/2400475.html


在vs2013下运行上段程序时,出现如下错误:

e:\vs2013\test10-9\os2\os2\os2.cpp(59): error C2664: “BOOL CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION)”: 无法将参数 2 从“char [4]”转换为“LPWSTR”
1>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换


我们可以看到出现错误的原因是“无法将参数 2 从“char [4]”转换为“LPWSTR””

而在程序最开始,我们将参数2定义为了char类型,所以只要在一开始该店定义类型就可以了~


我的做法是:

wchar_t szCommandLine[] = _T("cmd");

大家可以参考下~~

你可能感兴趣的:(windows-进程的创建)