找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 17412|回复: 7
打印 上一主题 下一主题

CAA中一个流程问题

[复制链接]
跳转到指定楼层
1
发表于 2005-8-9 21:27:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
各位高手:
       我的程序要用到一个文本文件,这个文件是别人写的程序生成的,我在用这个程序之前用WinExec
("C:\\ProgramFiles\\intel_a\\caowei\\Debug\\hexinsuanfa.exe",SW_SHOW);来调用别人的程序去产生那个文件,可是别人的这个可执行程序上面有确认对话框(如下图),只有当用户点了那个“展开”按钮之后才开始产生我需要的文本文件,由于我在WinExec语句之后的语句在WinExec执行之后马上开始去读那个文件(这时候文件还没有产生),所以程序报错,请问有什么办法可以使文本文件产生后WinExec之后的代码才开始执行。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2005-8-10 15:34:32 | 只看该作者
你可以用CreateProcess, 然后用WaitForSingleObject等待"hexinsuanfa.exe"结束.
(https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp 里有说明和例子)
3
发表于 2005-8-10 20:06:10 | 只看该作者
谢谢你了
我试试看
:)
4
发表于 2005-8-10 21:18:43 | 只看该作者
我看过了
请问CreateProcess,成功后,怎样WaitForSingleObject等待那个exe结束?代码怎样写呢?
5
发表于 2005-8-10 21:30:17 | 只看该作者
STARTUPINFO si;
  &nbspROCESS_INFORMATION pi;
  
   ZeroMemory( [$si, sizeof(si) )]
   si.cb = sizeof(si);
   ZeroMemory( [$pi, sizeof(pi) )]
   
   // Start the child process.  
  int proFlag= CreateProcess( NULL,   // No module name (use command line).  
     TEXT("MyChildProcess"), // Command line.  
     NULL,             // Process handle not inheritable.  
     NULL,             // Thread handle not inheritable.  
     FALSE,            // Set handle inheritance to FALSE.  
     0,                // No creation flags.  
     NULL,             // Use parent's environment block.  
     NULL,             // Use parent's starting directory.  
     &si,              // Pointer to STARTUPINFO structure.
     [$pi )]             // Pointer to PROCESS_INFORMATION structure.
   
  if(proFlag==0)     
   {
     printf( "CreateProcess failed (%d).\n", GetLastError() );
   }
  else
  {
  WinExec("C:\\Program Files\\intel_a\\caowei\\Debug\\hexinsuanfa.exe",SW_SHOW);
  }
  
现在是这样,应该怎么改呢?
:)
6
发表于 2005-8-10 21:33:37 | 只看该作者
提示说CreateProcess failed(2)
为什么?
7
发表于 2005-8-10 21:43:29 | 只看该作者
STARTUPINFO si;
  &nbspROCESS_INFORMATION pi;
  
   ZeroMemory( [$si, sizeof(si) )]
   si.cb = sizeof(si);
   ZeroMemory( π, sizeof(pi) );
   
   // Start the child process.
  int proFlag= CreateProcess( NULL, // No module name (use command line).
  
// !!!!!
   TEXT("C:\\Program Files\\intel_a\\caowei\\Debug\\hexinsuanfa.exe"), // Command line
// !!!!!
  
   NULL, // Process handle not inheritable.
   NULL, // Thread handle not inheritable.
   FALSE, // Set handle inheritance to FALSE.
   0, // No creation flags.
   NULL, // Use parent's environment block.
   NULL, // Use parent's starting directory.
   &si, // Pointer to STARTUPINFO structure.
   π ); // Pointer to PROCESS_INFORMATION structure.
  
  if(proFlag==0)
   {
   printf( "CreateProcess failed (%d).\n", GetLastError() );
   return;
   }  
  
   // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );
  
   // Close process and thread handles.  
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
  
   // now the file shall exist
   // your code ...
8
发表于 2005-8-11 16:00:06 | 只看该作者
谢谢高手,可以了。
:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-23 22:15 , Processed in 0.040873 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表