Es gibt zwei Möglichkeiten, um eine separate ausführbare Programm aus einem Visual Basic- Programm zu starten. Eine Möglichkeit ist, die Visual Basic "Shell "-Befehl zu verwenden. Die andere ist die " CreateProcess " Windows Application Programming Interface (API) verwenden . Beide werden erfolgreich starten die externe ausführbare Programm , aber " CreateProcess " gibt dem Programmierer mehr Kontrolle darüber, wie das Betriebssystem übernimmt das Programm. Anleitung
Shell-Befehl
1
Starten Sie ein neues Visual Basic Standard EXE-Projekt. On " Form1 " , die standardmäßig erstellt wird, fügen Sie eine Befehlsschaltfläche mit dem Namen " cmdNotepad . "
2
-Code das Click-Ereignis Schaltfläche in der " cmdNotepad_Click ()" Ereignis . Deklarieren Sie eine Variable vom Typ long , um den Rückgabewert der Shell -Befehl zu halten. Um den Windows Notepad Programm zu starten , geben Sie " lngReturn = Shell : " . ("C \\ Windows \\ System32 \\ notepad.exe ) "
3
Geben Sie , wie Sie die Anwendung Notepad öffnen möchten in der Shell -Befehl. Die Optionen sind: vbHide , vbMaximizedFocus , vbMinimizedFocus , vbMinimizedNoFocus , vbNormalFocus und vbNormalNoFocus . Geben Sie eine der folgenden Optionen als zweiter Parameter an den Shell -Befehl als "Shell (" C : \\ Windows \\ System32 \\ notepad.exe " , vbNormalFocus ) . "
4
Sie die Prozess-ID aus der Rückgabewert der Shell -Befehl. Wie in Schritt 2 gezeigt , " lngReturn " enthält den Windows- Prozess-ID zugewiesen für die Notepad -Anwendung, die gerade aus dem Shell -Befehl gestartet wurde. Mit dem Prozess-ID , können Sie andere Aufgaben in Ihrem Programm ausführen wie die Überprüfung , ob der Prozess noch läuft vor dem Schließen der Visual Basic-Anwendung .
CreateProcess
5
Anfang ein neues Visual Basic Standard EXE-Projekt. On " Form1 " , die standardmäßig erstellt wird, fügen Sie eine Befehlsschaltfläche mit dem Namen " cmdNotepad . " In benutzerdefinierte Typen namens " PROCESS_INFORMATION " und " STARTUPINFO " in der " Erklärungen " unter " Form1. " Diese Strukturen werden zum Gruppieren von Daten verwendet werden und erforderlichen Parameter des " CreateProcess "-Funktion .
6
In zwei Konstanten , die auch Parameter des " CreateProcess "-Funktion .
Const SYNCHRONIZE = 1048576
Const NORMAL_PRIORITY_CLASS = & H20 &
Funktionen deklarieren , um den Prozess -Instanz zu erstellen ( " deklarieren " CreateProcess " Funktion als " Private Declare Function CreateProcess Lib " kernel32 " Alias " CreateProcessA " ") , öffnen Sie den Prozess ( "Private Declare Function OpenProcess Lib" kernel32.dll "") , den Prozess zu beenden ( "Private Declare Function TerminateProcess Lib" kernel32 "") und um den Griff zu schließen ( "Private Declare Function CloseHandle Lib" kernel32 "") .
7
-Code das Click-Ereignis der Schaltfläche in " cmdNotepad_Click (). " Definieren Sie eine Variable vom Typ PROCESS_INFORMATION , STARTUPINFO , eine Zeichenfolge zu null stellen und zwei longs für Rückgabewerte. Führen Sie den Editor. exe zum " CreateProcess "-Funktion : .
CreateProcess ( snull " Notepad " , ByVal 0 & , ByVal 0 & 1 & , NORMAL_PRIORITY_CLASS , ByVal 0 & snull , sInfo , pInfo )
8
Beenden Sie den Vorgang mit " TerminateProcess ( pInfo.hProcess , 0 & ) . " Schließen Sie den Bügel , um das Gewinde mit " CloseHandle ( pInfo.hThread ) " und der Vorgang mit " CloseHandle ( pInfo.hProcess ) . "