Fermeture d'un prog externe

cs_raymond876 Messages postés 4 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 3 mars 2005 - 2 mars 2005 à 18:17
cs_raymond876 Messages postés 4 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 3 mars 2005 - 3 mars 2005 à 09:43
Salut,



Je ferme un process externe a mon programme, ce process tourne a coté de l'horloge. Je le ferme avec :



hTemp = OpenProcess(PROCESS_ALL_ACCESS, false, (DWORD) PID);

TerminateProcess(hTemp,0);



Le process se ferme bien mais il reste l'icone a coté de l'horloge.
elle disparai lorsque l'on passe la sourie dessus. Comme se programme
est lancé et fermé réguliérement aprés un certaint temp je me retrouve
avec 200 icones.



Quelqu'un connait le moyen de rafaichir la barre de tache???



Merci d'avance.

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mars 2005 à 19:15
Tu n'aurais pas moyen de le fermer proprement sans TerminateProcess() ?
Essaie avec un PostMessage WM_CLOSE à la fenêtre propriétaire de l'icone.

ciao...
BruNews, MVP VC++
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
2 mars 2005 à 19:24
Bnojour,

je pense qu'il n'est pas très indiqué de terminer un processus par TerminateProcess

car cela ne libère pas les ressources . Il faudrait
plutôt essayer d'envoyer un WM_QUIT si c'est une application avec une
fenêtre .

Sinon pour rafraichir peut-être que envoyre une message WM_PAINT à la barre des tâches est possible .


A m a u r y
0
cs_raymond876 Messages postés 4 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 3 mars 2005
3 mars 2005 à 09:43
Mon prob c'est que normalement quand la fenetre est ouverte si on quit
( clique sur la croix, ATL + F4, ... ) la fenetre se réduit a cote de
l'hologe. Même éffet avec un WM_QUIT et CLOSE.



Enfin avant que je teste avec TerninateProcess.



Voici mon code si vous pouvez jetter un coup oeil.



Mais c'est vrai que les resource sont peut etre pas totalement libéré
car c'est un prog pour commuter une cate SAT de TV et DATA. Et des fois
j'ai des prob.



bool DVBDataExit()

{

//Recherche du processus:

char ExeName[] = "DVBData.exe";

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);



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 );



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;

}
0
Rejoignez-nous