bool TMainForm::ShellExit(char *ExeName)
{
//Recherche du processus:
HANDLE hSnapShot;
PROCESSENTRY32 uProcess;
bool r;
short PID = 0; //variable qui va stocker l'ID du processus de l'application
// que l'on désire fermer.
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);
do // Cette boucle énumère tout les processus
{
if ( strstr(uProcess.szExeFile, ExeName) )//on cherche le nom de notre application dans le chemin d'accès de l'éxécutable du processus.
PID = (short) uProcess.th32ProcessID;
r = Process32Next(hSnapShot, &uProcess);
} while ( r );
CloseHandle(hSnapShot);
if ( PID == 0)
return false;
//Fermeture du processus:
HANDLE hTemp;
hTemp = OpenProcess(PROCESS_ALL_ACCESS, false, (DWORD) PID);
TerminateProcess(hTemp,0);
return true;
}
//---------------------------------------------------------------------------
Partager