首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

EVC 创建进程 然后编译报错,该如何解决

2012-05-03 
EVC 创建进程 然后编译报错错误如下:error C2664:CreateProcessW : cannot convert parameter 10 from

EVC 创建进程 然后编译报错
错误如下:
error C2664:'CreateProcessW' : cannot convert parameter 10 from 'struct CProcessPracticeDlg::PROCESS_INFORMATION *' to 'struct _PROCESS_INFORMATION *'


我的代码很简单:就是定义一个全局结构体类型,然后在函数里面定义一个结构变量,接着创建进程。(代码直接是从《EVC高级编码及其应用开发》书上搬过来的)

见代码:
结构体定义 
typedef struct _PROCESS_INFORMATION{
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} _PROCESS_INFORMATION;

bool CProcessPracticeDlg::WinExec(LPCTSTR FileName)
{
  PROCESS_INFORMATION processInfo; ------------------>错误定位此处  
  if(! CreateProcess(FileName,NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,NULL,NULL,NULL,&processInfo))
  {
return false;
  }
  CloseHandle(processInfo.hThread);
  CloseHandle(processInfo.hProcess);
  return true;
 }

void CProcessPracticeDlg::OnBtnExec() 
{
// TODO: Add your control notification handler code here
WinExec(_T("calc"));
}


[解决办法]
if(! CreateProcess(FileName,NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,NULL,NULL,NULL,&processInfo))

改成

 if(! CreateProcess(FileName,NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,NULL,NULL,NULL,('struct _PROCESS_INFORMATION *)&processInfo))

试试
[解决办法]
typedef struct _PROCESS_INFORMATION{
 HANDLE hProcess;
 HANDLE hThread;
 DWORD dwProcessId;
 DWORD dwThreadId;
 } _PROCESS_INFORMATION;
 这个是你自己定义的类型,而CreateProcess函数的参数用的是系统定义的PROCESS_INFORMATION类型,
虽然这两个结构体结构完全一样,但是对于编译器来说是两种不同的类型。
依我看,完全没必要定义_PROCESS_INFORMATION这个结构,直接使用系统带的PROCESS_INFORMATION就行

热点排行