r = Process32First(hSnapShot, &uProcess);
do // Cette boucle énnumè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;
//MessageBox(0,uProcess.szExeFile,0,0);
r = Process32Next(hSnapShot, &uProcess);
} while ( r );
return hSnapShot;
ce code récupere tous les process qui sont entrain de tourner, ne faite pas attention au return hSnapShot, a la base c t return PID.
Bon voila il me fodrai un HWND par rapport au ExeName, alors a mon avis par le HANDLE, peut etre ou par le pid de la fonction
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 12 juil. 2004 à 23:17
Pas besoin d'une source pour ca, une seule fonction: FindWindow
Par contre tu trouvera pas un HWND à partir du nom de l'exe car le nombre de HWND peut être 0, 1, 2... pour un programme donné
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 13 juil. 2004 à 00:02
Salut,
Pourquoi ne ferais tu pas le contraire: a partir d'un HWND tu peux trouver le PID, donc en enumerant les fenetres tu peux te faire la liste des HWND de chaque processus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
youpiyoyo
Messages postés539Date d'inscriptionvendredi 6 juin 2003StatutMembreDernière intervention14 juillet 2010 14 juil. 2004 à 14:30
exactement c t un code ki avait pour but de tuer un processus
c un code ke j'avais codé il y a un bout largement inspirer de msdn....
je te donne tout le code pour ke tu puisse tuer le proccessus en fonction de son titre... destiné a imanewin32
short CALLBACK CClose(char* ExeName)
{
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.
r = Process32First(hSnapShot, &uProcess);
do // Cette boucle énnumè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 );
// If we can't open the process with PROCESS_TERMINATE rights,
// then we give up immediately.
hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE,
dwPID);
if(hProc == NULL)
{
return TA_FAILED ;
}
// TerminateAppEnum() posts WM_CLOSE to all windows whose PID
// matches your process's.
EnumWindows((WNDENUMPROC)TerminateAppEnum, (LPARAM) dwPID) ;
// Wait on the handle. If it signals, great. If it times out,
// then you kill it.
if(WaitForSingleObject(hProc, dwTimeout)!=WAIT_OBJECT_0)
dwRet=(TerminateProcess(hProc,0)?TA_SUCCESS_KILL:TA_FAILED);
else
dwRet = TA_SUCCESS_CLEAN ;
short PID=CClose("NOM de TON APPLICATION, genre Outlook,...., c'est le titre de l'application");
TerminateApp(PID,5000);
running= false;
WaitForSingleObject(hThread,1000);
CloseHandle(hThread);
cette manière et fortement conseiller par microsoft pour terminer une application apres c a chacun de voir...
pour revenir a AlexMAN m'a proposé comme source je l'a trouve tres interessante et je vais faire un peux de ta sauce plus ce ke je connais si cela t'interesse...
a aussi un truc je sais po pourkoi fodrai ke je regarde de facon plus appronfondi, mais pendant ton SetWindowText, il y a une couille, a la fin il me met un caractere bizard...., et chez moi pour ke le prog ne merde po j'ai du initialiser tout tes char a NULL
c'est-à-dire par ex char cChoice="";, et ainsi de suite, car ca compil mais lors de l'execution il me di ke la variable n'a po ete initialisé donc... (c'est des détails, ne t'en fais po c po une critike)