怎么判断一个程序正在运行当中。
不用 FindWindow 就是呢我在我的程序里调用执行了另外一个外部的程序(用EXEC)。
程序要求是:当那个外部的程序执行时。我的程序处于要处于暂停状态。当那个外部的程序执行完成后。我的程序才继续执行下去。我用 FindWindow  实现过,就是占用系统资源太厉害了。不知各位大侠又没有更好的办法。另外。我想问一下。怎么结贴?

解决方案 »

  1.   

    findwindow 跟占用过多的资源有什么关系?问题不在这里吧!结贴就是在问题列表中点击“管理”进去就能看见了
      

  2.   

    我用的是笨办法。
    当我用EXEC启动那个外部程序后。我就用 findwindow 不停的查找那个外部程序,如果找到了。就认为那个外部程序还在运行。找不到了 就认为那个外部程序结束了。我的程序才继续执行下去,这样的一个缺点是我的程序要不停的循环的查找。导致系统资源的浪费。我想找一种更简单的方法。就是占用系统资源少一点的
      

  3.   

    另外一个程序可以由你控制吗?如果能控制,你就在那个被调用的.exe中在执行完的时候,向宿主程序(这个叫法不贴切,姑且这样叫吧)发送一个自定义的message,这样不就搞定了吗。
      

  4.   

    http://expert.csdn.net/expert/topic/620/620694.xml?temp=.2514459
      

  5.   

    回复人: windindance(风舞轻扬) (  ) 信誉:98  2002-4-3 21:10:25  得分:20  
     
     
      
    我记得CreateProcess里有一个标志可以的。
    var
      CmdLinePChar:array[0..120] of char;
      StartUpInfo:TStartUpInfo;
      ProcessInfo:TProcessInformation;if CreateProcess(nil,CmdLinePChar,nil,nil,True,0,nil,nil,StartUpInfo,ProcessInfo) then
        begin
          WaitForSingleObject(Processinfo.hProcess,INFINITE);
        end