运行主程序"123.exe" ,隐藏自身主体,运行下面'QQ.exe'程序.
Application.ShowMainForm:=false;WinExec(PChar('QQ.exe'), SW_SHOW);  //启动外部程序。'QQ.exe'是别人写的//进程里应该有 “123.exe”和“QQ.exe”两个我想用Timer1控件实时监控进程 “QQ.exe”判断如果“QQ.exe”被用户关掉了,自动关闭自身主程序“123.exe”,代码该怎么写?谁能提供好用的Delphi语言代码给我啊?

解决方案 »

  1.   

    //uses ComObj;
    //调用:
    //MonitorProcess('qq.exe')
    procedure MonitorProcess(const MonitorName: string);
    var
      oLocator, oWMI, oProcesses, oLatestProcess : Variant;
      sMonitorName: string;
    begin
      oLocator := CreateOleObject('WbemScripting.SWbemLocator');
      oWMI := oLocator.ConnectServer;
      oProcesses := oWMI.ExecNotificationQuery('select * from __instancedeletionevent '
        + 'within 1 where TargetInstance isa ''Win32_Process''');
      sMonitorName := LowerCase(MonitorName);
      while True do
      begin
        oLatestProcess := oProcesses.NextEvent;
        if LowerCase(oLatestProcess.TargetInstance.Name) = sMonitorName then
          ExitProcess(0);
      end;
    end;