VB-Homepage Tipp 188

Anwendung starten und zeitgesteuert beenden

Des öfteren hab ich schon Programme geschrieben, deren Funktionsumfang gar nicht so groß war, wo es mehr darum ging Vorgänge zu automatisieren, also ein Programm soll zu einer vorbestimmten Zeit starten (meist Nachts), seine Aktionen ausführen, diese protokollieren (damit später nachvollziehbar) und sich dann möglichst auch wieder beenden.

Für den Bereich Programmstart gibt es ja die unterschiedlichsten Schedule Programme oder aber Sie kreieren ein eigenes Programm das im Hintergrund läuft und zur vorbestimmten Zeit die eigentliche Anwendung startet. Das ist alles kein Problem.

Etwas problematischer ist es mit dem Programmende, zumindest wenn das Programm nicht von Ihnen selber stammt und Sie das Programmende definieren konnten.

Deshalb gibt es hier einen Tipp, der es Ihnen ermöglichen soll, Fremdprogramme nach einem Start auch wieder (nach einer definierbaren Zeit) zu beenden.

Zur Definition unter Allgemein/Deklarationen
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Die Aktion (Bsp Command1_Click)
Dim Task As Long, Handle As Long, Response As Long

'Programm wird gestartet
Task = Shell("winver.exe", vbNormalFocus)
Handle = OpenProcess(Synchronize, False, Task)

'die Definierung der Laufzeit des Programms = 5000 steht hier für 5 Sek.
Response = WaitForSingleObject(Handle, 5000)
AppActivate Me.Caption

'Programm wird nach Ablauf der Zeit beendet.
Response = TerminateProcess(Handle, 0)
Response = CloseHandle(Handle)

In unserem Beispiel wird das Windowsversionsfenster aufgerufen und solange Sie es nicht selbst vor Ablauf der Zeit schließen, automatisch nach 5 Sek. beendet.


Tipp-Download

Quelle : Matt Hart - mhart@taascforce.com

Zurück zur Übersichtsseite