Thema: Delphi Handle- + Prozess-Fragen

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 20. Dez 2002, 16:39
Moin Chris,
  1. Dazu müsstest Du Dir (ein Weg) über CreateToolHelp32SnapShot und den zugehörigen Funktionen die ProzessID auslesen (Suchen, bis Du einen Prozess hast, zu dem die Exe gehört, und könntest diesen dann mit TerminateProcess beenden.
    Einfacher dürfe es sein über FindWindow ein Handle auf des Fenster der Anwendung zu beschaffen, und an dieses dann ein WM_CLOSE, oder WM_SYSCOMMAND mit Parameter SC_CLOSE, senden (SendMessage).
    Letztere Variante wäre die mit Abstand sauberste, denn bei TerminateProcess bekommt der Prozess keine Gelegenheit mehr zu Aufräumarbeiten (Resourcenfreigabe usw.)
  2. Kann ich aus dem Stand auch nicht beantworten es gibt einfach sehr viele verschiedene (Fensterhandle, Dateihandle, Objekthandle...)
  3. Mit Hilfe von EnumWindows und EnumChildWindows kannst Du Dir eine Liste aller belegten Fensterhandle organisieren. Dateihandle wüsste ich jetzt nicht genau, von sonstigen mal ganz zu schweigen.

Ganz allgemein:
Handle sind eingentlich nur Identifikationsnummern, mit denen bestimmte Objekte erkannt bzw. angesprochen werden können.
In diesen ist auch kodiert (leider weiss ich nicht wie) um was für ein Handle es sich handelt, damit die Funktionen auch ermitteln können ob das Handle für sie überhaupt gültig sein kann.
Es ist ja, z.B., unsinnig an GetWindowText ein Dateihandle zu schicken.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat