Einzelnen Beitrag anzeigen

Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#7

AW: "tote" Instanzen finden und beenden?

  Alt 8. Mär 2011, 07:24
Okay, dann würde die entsprechende Code-Sequenz wohl so aussehen:

Delphi-Quellcode:
    repeat
       h := FindWindowEx(0, h, 'TApplication', PChar(Application.Title));

       if (h <> 0)
         and (h <> Application.Handle) then
       begin
          //prüfen, ob die Instanz hängt
          if (SendMessageTimeOut(h, WM_NULL, 0, 0, SMTO_NORMAL or SMTO_ABORTIFHUNG,
             5000, RetValue) = 0) then
          begin
             //ProzessId des hängenden Prozesses holen
             GetWindowThreadProcessId(h, ProcessId);

             if (ProcessId = 0) then
                Continue;

             //hängenden Prozess beenden
             hProcess := OpenProcess(PROCESS_TERMINATE, False, ProcessId);

             if (hProcess <> 0) then
                try
                   TerminateProcess(hProcess, 255);
                finally
                   CloseHandle(hProcess);
                end;
          end;
       end;
    until (h = 0);
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?

Geändert von HeikoAdams ( 8. Mär 2011 um 08:16 Uhr)
  Mit Zitat antworten Zitat