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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
//ne pas oublier d'include la librairie stdio.h sinon FILE ne sera pas reconnu par exemple
//on passe le chemin (+ parametre si besoin) en param
//cette fonction a la souplesse de pouvoir prendre des arguments aussi
void TForm1::exec_process(AnsiString chemin)
{
FILE *out;
out=fopen("c:\\cmd.bat","w");
if(out==NULL) return; // fichier non crée
fprintf(out,"cd\\ \n c:\n ");
fprintf(out,"%s Start",chemin.c_str());
fclose(out);
STARTUPINFO si;
PROCESS_INFORMATION piProcessC; // preparation de la structure STARTUPINFO
ZeroMemory(&si, sizeof(si));
// initialisation de la taille
si.cb = sizeof(si);
bool fSuccess = CreateProcess("c:\\cmd.bat" ,NULL, NULL, NULL, TRUE,0, NULL, NULL, &si, &piProcessC);
if (fSuccess)
{
// fermer le handle de thread dès qu'il devient inutile
CloseHandle(piProcessC.hThread);
// attente jusqu'à la signalisation de la fermeture de l'appli
// WaitForSingleObject(piProcessC.hProcess, INFINITE); // pas necessaire ici
// le processus est terminé
unsigned long lpExitCode ;
GetExitCodeProcess(piProcessC.hProcess, &lpExitCode);
if (lpExitCode != STILL_ACTIVE)
// fermer le handle de process
CloseHandle(piProcessC.hProcess);
}
} |
Partager