VC异步调用外部程序出现的问题

azmiao 2003-10-19 09:59:58
我在主程序中调用外部程序,直到外部程序结束主程序才继续执行。用如下方法调用
// CString strMsg;
// strMsg=(CString)"start to Execute other exe"+ strCmdLine;
// AfxMessageBox(strMsg);
CString strWorkPath;
strWorkPath = strCmdLine.Left(strCmdLine.GetLength()-strCmdLine.ReverseFind('\\') -2);
PROCESS_INFORMATION lpPI;
STARTUPINFO si={0};

si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWMAXIMIZED;

CreateProcess(NULL,
strCmdLine.GetBuffer(strCmdLine.GetLength()),
NULL,NULL,FALSE,
0,
NULL,
strWorkPath.GetBuffer(strWorkPath.GetLength()),
&si,
&lpPI);

DWORD rc = WaitForSingleObject(lpPI.hProcess ,INFINITE);
DWORD exitcode;
GetExitCodeProcess(lpPI.hProcess,&exitcode);
//for debug
//AfxMessageBox("End of execute other exe");
生成打包后,在一些机器上运行正常,但是在另外一些机器上则好像没调用外部程序似的,都是WIN2000PROFESSIONAL,真是奇怪呀!而且,在运行正常的机器上安装完我的安装包后,它会提示要重启,而运行不正常的机器则没有这个提示,我用的是InstallShield打包的。
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
azmiao 2003-10-19
  • 打赏
  • 举报
回复
传给此函数的路径strCmdLine是对的,不过后来我发现strWorkPath错了,应该是strWorkPath = strCmdLine.Left(strCmdLine.ReverseFind('\\')); 奇怪的是它在一些机器上可以运行,而其他一些不行。后来我在不行的机器上安装VC后,就可以了。所以感觉是我的安装程序有问题,可能没有将一些DLL注册。
MilitaryMiniatures 2003-10-19
  • 打赏
  • 举报
回复
路径上是否存在问题。
azmiao 2003-10-19
  • 打赏
  • 举报
回复
我怀疑是InstallShield的问题,那位有这方面的经历吗?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧