Ci sono due modi per avviare un programma eseguibile separato all'interno di un programma Visual Basic . Un modo è quello di utilizzare il comando di Visual Basic "Shell" . L' altro è quello di utilizzare l'interfaccia di programmazione delle applicazioni " CreateProcess " Windows ( API ) . Entrambi con successo lanciare il programma eseguibile esterno , tuttavia , " CreateProcess " fornisce al programmatore un maggiore controllo sul modo in cui il sistema operativo gestisce il programma . Istruzioni
shell dei comandi
1
Avviare un nuovo progetto EXE standard di Visual Basic . Su " Form1 " che viene creato per impostazione predefinita , aggiungere un pulsante di comando e il nome " cmdNotepad . "
2 Codice
evento l'evento click del pulsante di comando nel " cmdNotepad_Click ( ) " . Dichiarare una variabile di tipo lungo per contenere il valore restituito dal comando Shell. Per lanciare il programma Blocco note di Windows , digitare " lngReturn = Shell : " . ( "C \\ Windows \\ System32 \\ Notepad.exe ) "
3
Specificare come si desidera che l'applicazione Blocco note per aprire nel comando Shell. Le opzioni sono: vbHide , vbMaximizedFocus , vbMinimizedFocus , vbMinimizedNoFocus , vbNormalFocus e vbNormalNoFocus . Specificare una delle opzioni come secondo parametro al comando Shell come "Shell ( " C : \\ Windows \\ System32 \\ Notepad.exe " , vbNormalFocus ) . "
4
ottenere l'ID di processo del valore del comando Shell ritornare . Come mostrato in Fase 2 , " lngReturn " conterrà l'ID di processo di Windows assegnato per l'applicazione Blocco note che è stato appena lanciato dalla shell dei comandi . Con l'ID di processo , è possibile eseguire altre attività in programma , come verificare se il processo è ancora in esecuzione prima di chiudere l' applicazione Visual Basic .
CreateProcess
5
Inizio un nuovo progetto EXE standard di Visual Basic . Su " Form1 " che viene creato per impostazione predefinita , aggiungere un pulsante di comando e il nome " cmdNotepad . " Aggiungi i tipi definiti dall'utente denominata " PROCESS_INFORMATION " e " STARTUPINFO " nella sezione " Dichiarazioni " di " Form1 ". Queste strutture vengono utilizzate per raggruppare i dati e parametri della funzione " CreateProcess " sono obbligatori.
6
Aggiungi due costanti che sono anche parametri della funzione " CreateProcess " .
Const SINCRONIZZA = 1048576
Const NORMAL_PRIORITY_CLASS = & H20 &
dichiarare funzioni per creare l'istanza del processo ( " dichiarare la " " funzione " CreateProcess private Declare Function CreateProcess Lib " kernel32 " Alias " CreateProcessA " " ) , aprire il processo ( "Private Declare Function OpenProcess Lib " kernel32.dll " " ) , terminare il processo ( "Private Declare Function TerminateProcess Lib " kernel32 "") e per chiudere l'handle ( "Private Declare Function CloseHandle Lib " kernel32 " " ) .
7
codice all'evento click del pulsante di comando in " cmdNotepad_Click ( ) . " Definire una variabile di tipo PROCESS_INFORMATION , STARTUPINFO , una stringa per rappresentare nulla e due anela per i valori di ritorno . Passare il Blocco note. exe per la funzione " CreateProcess " : .
CreateProcess ( sNull , " Notepad.exe " , ByVal 0 & , ByVal 0 & , 1 & , NORMAL_PRIORITY_CLASS , ByVal 0 & , sNull , sInfo , pInfo ) economici 8
terminare il processo con " TerminateProcess ( pInfo.hProcess , 0 & ) . " Chiudere la maniglia a filo con " CloseHandle ( pInfo.hThread )" e al processo con " CloseHandle ( pInfo.hProcess ) . " < br >