hur.cn - 华软网

 热门搜索

CreateProcess异常

  作者:未知    来源:网络    更新时间:2011/8/22
C++">STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));


if (!::CreateProcess(NULL,
TEXT("C:\\windows\\system32\\calc.exe"),
NULL,
NULL,
FALSE, 
0,
NULL,
NULL,
&si,
&pi))
{
return -1;
}

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

新建一个win32工程,运行成功
新建一个对话框工程,运行报异常:CWinApp::LoadAppLangResourceDLL() 
mytest.exe 中的 0x7c82f29c 处未处理的异常: 0xC0000005: 写入位置 0x0041ca8c 时发生访问冲突
---华软 网友回答---
要设置pi的大小吧
---华软网友回复---
TEXT("C:\\windows\\system32\\calc.exe"),
=========
不要这样写,写在一个字符串变量之中,因为在调用CreateProcess中会改变这个参数,所以不能定义成常量。
---华软网友回复---
mark
---华软网友回复---
2楼说得不错,不可以直接用常量,一定要用变量.
因为这个参数是__inout_opt属性的,不但要输入,还要输出.
你要是直接用常量就是不能输出了.
---华软网友回复---
C++">BOOL WINAPI CreateProcess(
  __in_opt     LPCTSTR lpApplicationName,
  __inout_opt  LPTSTR lpCommandLine,
  __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  __in         BOOL bInheritHandles,
  __in         DWORD dwCreationFlags,
  __in_opt     LPVOID lpEnvironment,
  __in_opt     LPCTSTR lpCurrentDirectory,
  __in         LPSTARTUPINFO lpStartupInfo,
  __out        LPPROCESS_INFORMATION lpProcessInformation
);

第二个参数是LPTSTR lpCommandLine,注意是LPTSTR,不是LPCTSTR
---华软网友回复---
看2楼答案      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。