passer d'un PID a un HWND ?? [VC++] - Programmation
Marsh Posté le 29-10-2001 à 12:15:31
En tout cas, niveau sur le plan de l'incompréensibilité, c nickel... si tu veux parler façon expert, soit précis dans tes mots, et fais gaffe ... à mon avis, tu devrais te relire !
Marsh Posté le 29-10-2001 à 12:18:15
Et puis sinon, si g compris ce que tu veux, essaye avec OpenProcess, en mettant le flag d'accès à PROCESS_DUP_HANDLE. Ou une autre flag d'ailleur, peut être PROCESS_ALL_ACCESS, regardes.
[edtdd]--Message édité par El_Gringo--[/edtdd]
Marsh Posté le 29-10-2001 à 13:12:35
bon je réexplike e nun peu plus clairement ce que je veux faire :
je cherche paris tous les process celui done l'exe correspontra a tel programme :
par exmeple je cherche a fermer icq le nom de l'exe est Icq.exe .. et je cherche le process qui correspond, là j erécupère le PID.. et j'aimerai terminer ce process.
pour cela j'ai la fonction POSTMESSAGE qui nécéssite un HWND et un MSG WM_CLOSE.
mais je n'arrive pas a trouver le HWND d'un process ou Le HWND des fenetre enfant de ce process (si je m'embrouille pas avec les noms).
voila
Marsh Posté le 29-10-2001 à 14:08:18
Alors...
déja, tu peux pas faire un send message à un thread, parce que sendmessage (ou postmessage) c pour envoyer des messages à une fenêtre. D'ailleur ça prend un HWND (qui est une abréviation de Handle Window je pense). En fait ce dont tu as besoin, c de récupérer le Handle du process. ça, tu dois pouvoir le faire avec la fonction que je t'ai donnée au dessus. Avec ce Handle, t'utilises la fonction TerminateProcess.
Voila... et encore un truc : tu peux trouver plein de choses avec la msdn, en allant dans l'onglet Sommaire, puis SDL platform-->Reference .
Marsh Posté le 29-10-2001 à 14:34:36
lol merci je vais réessayer comme ça alors
sinon j'ai trouvé une calsse EnumWinModules qui me permet de récupérer tout ce que je veux )
merci
Marsh Posté le 29-10-2001 à 14:55:18
...même que, si j'me permettais, j'te conseillerai d'utiliser plutot EnumWindowProc
Marsh Posté le 29-10-2001 à 20:02:44
Décidément j'ai bcp de mal
j'appelle ceci :
EnumThreadWindows( pEntry.th32ProcessID , EnumThreadWndProc, NULL);
sachant que j'ai déclaré dans mon .h :
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam)
mais je capte pas .. il me dit :
'EnumThreadWindows' : cannot convert parameter 2 from 'int (struct HWND__ *,long)' to 'int (__stdcall *)(struct HWND__ *,long)'
Marsh Posté le 29-10-2001 à 20:41:54
MAJ
oué j'ai trouvé
en fait dans mon .h je devais déclarer ma fonction :
protected:
static BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam)
Marsh Posté le 30-10-2001 à 09:07:57
ouais, ou, si t en C++, tu déclares simplement ce truc en dehors de la définition de ta classe... c comme ça ! Le compilateur l'a décidé ainsi. Et, c admis pour tous, au pays de la programmation, le compilateur est roi (celui qui est pas d'accord lève le doigt)
Marsh Posté le 29-10-2001 à 11:52:45
voila .. j'ai fait un prog qui scan tous les process actifs .. et j'aimerai leur envoyer un WM_message (pour fermer un programme).
pour envoyer un WM_ j'ai besoin d'un HND vers la fenetre en question.. comment faire pour passer de mon PID a mon HWNM (ou celui des fenetres qui viennet de ce process)
je suis perdu .. j'ai cherché sur CodeGurru et dans la MSDN et je trouve pas
merci de me dire ce que vous en pensez.
ps: cela fait pas longtemps que je fais du VC++.