Moin Chris,
- 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.)
- Kann ich aus dem Stand auch nicht beantworten es gibt einfach sehr viele verschiedene (Fensterhandle, Dateihandle, Objekthandle...)
- 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.