Mit VB / API Exe beenden wie über Taskmanager

14/06/2012 - 14:02 von Wilfried Dietrich | Report spam
Ich möchte eine mit VB erstellte Exe A aus einer anderen
VB-Exe B heraus beenden, so dass in der Exe A im QueryUnload
UnloadMode = 3 (vbAppTaskManager) ausgelöst wird, also
wie, wenn ich die Exe A über den Taskmanager beenden würde.

Alle meine bisherigen Versuche mit den API's:

Result = GetWindowThreadProcessId(hWnd, Task)
Task = OpenProcess(PROCESS_TERMINATE, 0&, Result)
Result = TerminateProcess(Task, 1&)
Result = CloseHandle(Task)

beenden zwar Exe A bzw. schießen Exe A ab, lösen aber kein
QueryUnload bzw. UnloadMode = 3 (vbAppTaskManager) aus.

Result = SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0&)
schließt Exe A, löst aber auch kein UnloadMode = 3 aus.

Wie bekomme ich das hin?


Gruß
Wilfried
 

Lesen sie die antworten

#1 Christian Zimmermann
14/06/2012 - 16:18 | Warnen spam
Hallo Wilfried,

Am 14.06.2012 14:02, schrieb Wilfried Dietrich:
Ich möchte eine mit VB erstellte Exe A aus einer anderen
VB-Exe B heraus beenden, so dass in der Exe A im QueryUnload
UnloadMode = 3 (vbAppTaskManager) ausgelöst wird, also
wie, wenn ich die Exe A über den Taskmanager beenden würde.



eine VB-Form erkennt das Schließen über den Taskmanager an der
Besonderheit, dass dem unsichtbaren ThunderRT6Main-Fenster, welches von
VB immer automatisch erzeugt wird, die WM_CLOSE Nachricht geschickt wird
(siehe (1)). Um das Schließen per Taskmanager zu simulieren, müßtest Du
WM_CLOSE an eben dieses Fenster senden.
Dazu mußt Du natürlich zuerst per EnumWindows()-Api das entsprechende
Fenster(handle) der Klasse ThunderRT6Main resp. ThunderRT5Main ermitteln.

Gruß,
Christian

(1) Grund für das Schließen einer Form ermitteln
http://msdn.microsoft.com/de-de/lib...78896.aspx

Ähnliche fragen