如何在一个程序中关闭正在运行的另一个程序???
已知它的句柄!我用SendMessage(handle, WM_CLOSE, 0, 0);
postmessage(handle,WM_QUIT,0,0);
都不行???

解决方案 »

  1.   

    TerminateProcess(handle,?);
    请问这个函数的第二个参数如何得到???
      

  2.   

    那就强制杀掉
    procedure KillProcess(hWindowHandle: HWND); 
    var 
      hprocessID: INTEGER; 
      processHandle: THandle; 
      DWResult: DWORD; 
    begin 
      SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0, 
        SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);   if isWindow(hWindowHandle) then 
      begin 
        // PostMessage(hWindowHandle, WM_QUIT, 0, 0);     { Get the process identifier for the window} 
        GetWindowThreadProcessID(hWindowHandle, @hprocessID); 
        if hprocessID <> 0 then 
        begin 
          { Get the process handle } 
          processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION, 
            False, hprocessID); 
          if processHandle <> 0 then 
          begin 
            { Terminate the process } 
            TerminateProcess(processHandle, 0); 
            CloseHandle(ProcessHandle); 
          end; 
        end; 
      end; 
    end; 
      

  3.   

    hWindowHandle: HWND如何得到???
    和processHandle: THandle; 有什么不同???
      

  4.   


    我是这样调用的:KillProcess(hML); //hML:THandle;
    通过hML := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessStruct.th32ProcessID);得到的!
    但还是没能关闭指定的程序???