Visual Basic World - Programmierung und BeispieleVisual Basic World - Tipps und TutorialsVisual Basic World - Source-Code und Forum

<leer>

Tipp 040: Eine Anwendung für einen bestimmten Zeitraum ausführen

Autor: Alexander Kopatz  VB-Version: Visual Basic 6.0   Download: Beispielprojekt Tipp-040

Beschreibung

Mitunter ist es notwendig eine beliebige (fremde) Anwendung nur für einen bestimmten Zeitraum auszuführen und Sie danach wieder zu beenden. Mit reinen Visual Basic Bordmitteln ist dies freilich nicht möglich, es bedarf eines Griffes in die Windows API-Trickkiste. Dieses Beispiel demonstriert einen möglichen Lösungsweg und garantiert gleichzeitig das die eigene Anwendung im entsprechenden Zeitraum vollkommen reaktionsfähig bleibt. Hierzu wird zunächst die fremde Anwendung mit Hilfe der Visual Basic Shell-Funktion gestartet. Über den von der Funktion zurückgegebene process identifier (ProcessID bzw. PID) bleibt das gestartete Programm identifizierbar und kann so nach Ablauf der vorgesehenen Zeit unter Anwendung der API-Funktionen OpenProcess und TerminateProcess wieder beendet werden. Zur Bemessung des gewünschten Zeitraumes bis zur Beendigung wird ein einfaches Timer-Steuerelement verwendet.

Quellcode

frmProgRun
CommandButton            cmdStart
CommandButton            cmdWählen
CommonDialog             cdcProgramm
Form                     frmProgRun
Label                    Label1
Label                    Label2
Label                    lblHilfe
TextBox                  txtProgramm
TextBox                  txtZeit
' VISUAL BASIC WORLD
' ===========================================
' Das große Portal zum Thema Visual Basic.
'
' Wenn Ihnen dieser Source Code gefallen hat,
' dann empfehlen Sie Visual Basic World bitte
' weiter und/oder setzen Sie einen Link auf:
'
' http://www.visualbasicworld.de/
'
' Vernetzen Sie sich mit uns:
'
' http://twitter.com/visualbasicwrld

Option Explicit Private Declare Function TerminateProcess Lib "kernel32" _ (ByVal hProcess As Long, ByVal uExitCode 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 CloseHandle Lib "kernel32" _ (ByVal hObject As Long) As Long Const PROCESS_TERMINATE = &H1 Private ProcessId As Long Private ProcessId_Exit As Long Private RetVal As Variant
Private Sub cmdWählen_Click() cdcProgramm.ShowOpen txtProgramm.Text = cdcProgramm.FileName 'Mit Hilfe des Common Dialog Controls können 'Sie hier ein Programm auswählen. End Sub
Private Sub cmdStart_Click() If txtProgramm.Text <> "" Then ProcessId = Shell(txtProgramm.Text, vbNormalFocus) 'Shell startet das ausgewählte Programm. Timer.Interval = CInt(txtZeit.Text) * 1000 'Timer Interval einstellen. End If End Sub
Private Sub Timer_Timer() ProcessId_Exit = OpenProcess(PROCESS_TERMINATE, 0&, ProcessId) 'Mit dieser Funktion erhalten Sie das Object-Handle auf den 'aktiven Prozess. RetVal = TerminateProcess(ProcessId_Exit, 1&) 'Mit der "TerminateProcess" Funktion können Sie 'den ausgewählten Prozess und all seine Threads '(falls vorhanden) beenden. RetVal = CloseHandle(ProcessId_Exit) 'Hier wird das Handle wieder geschlossen. Timer.Interval = 0 End Sub

ANZEIGE <leer>
<leer> Aktuelle Seite Back To Top
Druckansicht | Feedback | Favoriten
Copyright © Visual Basic World, 2000-2014 | Kontakt | Impressum

Visual Basic World @ Twitter

Folgen Sie Visual Basic World!

Visual Basic World @ Twitter
Wenn Ihnen Visual Basic World gefällt, dann folgen Sie uns doch bei Twitter (@visualbasicwrld).
Vielen Dank!


Fragen & Forum

Wenn Sie offene Fragen zur Programmierung mit Visual Basic haben und in der Tipps & Tricks Sektion oder bei den Tutorials nicht fündig wurden, dann werfen Sie doch einen Blick ins Visual Basic World Forum.


Visual Basic World Forum

Im Forum erhalten Sie schnell Hilfe und finden eine Vielzahl an bereits beantworteten Fragen und Problemen.

Viel Vergnügen bei der Benutzung!


Fotografie & Design

Fotograf in Mannheim und Heidelberg.