Come usare CreateProcess in VB6

June 19

Come usare CreateProcess in VB6


"CreateProcess" è una funzione disponibile in una delle interfacce di programmazione delle applicazioni di base di Microsoft Windows (API) disponibili con il sistema operativo Windows. "CreateProcess" si apre un programma come un processo di Windows e all'interno della propria thread. API di Windows offrono una maggiore flessibilità per i programmatori VB. Per esempio, ci sono diverse funzioni disponibili all'interno del Windows API che permettono ai programmatori di eseguire azioni specifiche con una chiamata di funzione per l'API, piuttosto che tentare di scrivere il proprio codice per fare la stessa cosa.

istruzione

1 Avviare un nuovo progetto EXE standard di Visual Basic. Aggiungere i tipi definiti dall'utente denominati "PROCESS_INFORMATION" e "STARTUPINFO" nel codice per "Form1" che viene creato automaticamente con il nuovo progetto. Si tratta di strutture utilizzate in Visual Basic ai dati di gruppo e sono necessari tipi di parametri della funzione "CreateProcess".

2 Creare due costanti che sono anche parametri della funzione "CreateProcess".

Const SYNCHRONIZE = 1048576

Const NORMAL_PRIORITY_CLASS = & H20 &

Dichiarare la funzione "CreateProcess" come "Private Declare Function CreateProcess Lib" kernel32 "Alias" CreateProcessA "."

3 Dichiarare funzioni aggiuntive per aprire il processo ( "Private Declare Function OpenProcess Lib" kernel32.dll ""), terminare il processo ( "" kernel32 "Private Declare Function TerminateProcess Lib") e per chiudere l'handle ( "Private Declare Function CloseHandle Lib" Kernel32 "").

4 Aggiungere un pulsante di comando "Form1 'e il nome" cmdOpenNotepad. "Nel codice per" cmdOpenNotepad ", definire una variabile di tipo PROCESS_INFORMATION, STARTUPINFO, una stringa per rappresentare nulla e due anela valori di ritorno.

Passare il Notepad.exe alla funzione "CreateProcess" come segue:

CreateProcess (sNull, "Notepad.exe", ByVal 0 &, ByVal 0 &, 1 e, NORMAL_PRIORITY_CLASS, ByVal 0 &, sNull, sInfo, pinfo)

5 Terminare il processo con "TerminateProcess (pInfo.hProcess, 0 &)."

Chiudere la maniglia per il filo con "CloseHandle (pInfo.hThread)" e al processo con "CloseHandle (pInfo.hProcess)."

Consigli e avvertenze

  • Chiudere sempre la maniglia filo e la maniglia di processo al fine di evitare perdite di memoria.