我想控制一个程序的启动和关闭,可是这个程序被创建后,又启动了自带的一个隐藏进程,(只能在任务管理器看到)关闭时我只能关闭主程序,导致我无法关闭这个隐藏进程,循环下去内存耗尽.
请教各位高手如何如何关闭隐藏进程,万分感谢!!!

解决方案 »

  1.   

    X003Handle   : THandle;
    ST           : TStartupInfo;
    PT           : TProcessInformation;procedure StartX003Exe;
    begin
      FillChar(ST, SizeOf(ST), #0);
      with ST do
      begin
        cb := Sizeof(ST);
        dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        lpTitle := nil;
        wShowWindow := SW_SHOW;
      end;X003Handle := OpenProcess(PROCESS_ALL_ACCESS, False, PT.dwProcessId);
      TerminateProcess(X003Handle, 0);
      try
        if not CreateProcess(Pchar('X003Exe.exe'),nil,nil,nil,true, DETACHED_PROCESS, nil,nil,ST,PT) then
        begin
          MessageBox(Application.DialogHandle, PChar(ErrStartExe),
            PChar(MsgTitle), MB_OK + MB_ICONINFORMATION);
          Application.Terminate;
        end;
      except
        on e: exception do
          showMessage(e.Message);
      end;
    end;
      

  2.   

    贴乱了:变量不贴了,两个函数重新贴:
    procedure StartX003Exe;
    begin
      FillChar(ST, SizeOf(ST), #0);
      with ST do
      begin
        cb := Sizeof(ST);
        dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        lpTitle := nil;
        wShowWindow := SW_SHOW;
      end;
      try
        if not CreateProcess(Pchar('X003Exe.exe'),nil,nil,nil,true, DETACHED_PROCESS, nil,nil,ST,PT) then
        begin
          MessageBox(Application.DialogHandle, PChar(ErrStartExe),
            PChar(MsgTitle), MB_OK + MB_ICONINFORMATION);
          Application.Terminate;
        end;
      except
        on e: exception do
          showMessage(e.Message);
      end;
    end;procedure KillX003Exe;
    begin
      X003Handle := OpenProcess(PROCESS_ALL_ACCESS, False, PT.dwProcessId);
      TerminateProcess(X003Handle, 0);
    end;