1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| STARTUPINFO startupInfo; // Structure d'information sur la façon de lancer le process
PROCESS_INFORMATION processInfo; // Handle du process créé
ZeroMemory(&startupInfo, sizeof(STARTUPINFO));
startupInfo.cb = sizeof(startupInfo);
ZeroMemory(&processInfo, sizeof(PROCESS_INFORMATION));
AnsiString ligneCommande = "notepad.exe";
if (!CreateProcess(NULL, ligneCommande.c_str(), NULL, NULL, false, CREATE_SUSPENDED | DETACHED_PROCESS, NULL, NULL, &startupInfo, &processInfo))
RaiseLastOSError();
int erreur = 0;
// Lance le Thread
ResumeThread(processInfo.hThread);
// Attend la fin de l'analyse
if (WaitForSingleObject(processInfo.hProcess, INFINITE) == WAIT_FAILED)
erreur = GetLastError();
// Libère les handles du process et du thread
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
if (erreur!=0)
RaiseLastOSError(erreur); |
Partager