begin process at 2012 05 29 19:51:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

obtenir un HWND


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

obtenir un HWND

lundi 12 juillet 2004 à 22:50:49 | obtenir un HWND

youpiyoyo

j'aurai besoin de récupérer un hwnd
j'ai coder ca

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

merci de votre solution
lundi 12 juillet 2004 à 23:05:39 | Re : obtenir un HWND

AlexMAN

Membre Club
Tu peux obtenir un hwnd simplement par son titre, ou encore sa classe, si cette maniere t'interesse, http://www.cppfrance.com/code.aspx?ID=18911

Voila ++

ALhexman
lundi 12 juillet 2004 à 23:08:16 | Re : obtenir un HWND

youpiyoyo

merci je vais regarder le code
lundi 12 juillet 2004 à 23:17:04 | Re : obtenir un HWND

vecchio56

Administrateur CodeS-SourceS
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é
mardi 13 juillet 2004 à 00:02:39 | Re : obtenir un HWND

aardman

Membre Club
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.
mercredi 14 juillet 2004 à 11:54:11 | Re : obtenir un HWND

imanewin32

j'ai pas bien compris ce code est ce que tu essaye de tuer un processus connu par son pid.
car j'en ai besoin pour une application.
mercredi 14 juillet 2004 à 14:30:00 | Re : obtenir un HWND

youpiyoyo

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.


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


}

/////////////////

DWORD WINAPI /*CBPManagerserverDlg::*/ CALLBACK TerminateApp( DWORD dwPID, DWORD dwTimeout )
{
HANDLE hProc ;
DWORD dwRet ;

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

CloseHandle(hProc) ;

return dwRet ;
}
//////////////////////////
BOOL CALLBACK TerminateAppEnum( HWND hwnd, LPARAM lParam )
{
DWORD dwID ;

GetWindowThreadProcessId(hwnd, &dwID) ;

if(dwID == (DWORD)lParam)
{
PostMessage(hwnd, WM_CLOSE, 0, 0) ;
}

return TRUE ;
}




tu auras juste a faire ca

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)

voila c tout merci a tous
mercredi 14 juillet 2004 à 14:39:21 | Re : obtenir un HWND

AlexMAN

Membre Club
C'est vrai pour l'histoire du SetWindowText, mais ca ma pas semblé tres important donc j'ai pas cherché a comprendre...

++
mercredi 14 juillet 2004 à 14:40:11 | Re : obtenir un HWND

youpiyoyo

si je trouve je t'informe


Cette discussion est classée dans : hwnd, processus, pid, uprocess, hsnapshot


Répondre à ce message

Sujets en rapport avec ce message

block touche system utile [ par Tautau ] bon j'ai geleré pour trouver tout ca et ce n'est peut etre pas la meilleur facon de le faire mais je vous en fais part //// Ce sont des codes que j'ai forcer une fermeture [ par baby3378 ] Bonjour sa tous, je cherche le moyen de fermer un processus de force, je m'explique:_Y'a pas longtemps j'ai réinstallé tout mon system et dés que le t récupérer le processus père à partir du pid fils [ par pioonice ] Bonjour,Sous windows, avec Visual C++ 6...Est-il possible de récupérer le numéro de processus père à partir d'un numero de processus du fils?J'ai une Subclassage de Word 2007 [ par braxivamov ] Bonjour dans mon projet je subclasse l'application word 2007 pour y ajouter un bouton.J'ai donc implémenté dans une dll un hook shell ou je ne subclas Trouver le pid d'un processus depuis son nom (C++) [ par tekila_bandita ] Bonjour !Donc voila, cela fait un moment que je cherche mais je n'y arrive pas...Quelqu'un aurait-il une fonction pour trouver le pid d'un processus à information ipc [ par miouxmioux ] Bonjour à tous, Je travaille en ce moment avec les ipc, et plus spécialement avec les files de messages. J'ai pu voir que l'on pouvait récuperer le Recuperation PID procecuss [ par themaste ] Bonjour a tous!Voila, je suis a la recherche d'un code simple simple pour pouvoir récupérer le PID d'un processus, à partir de son nom.J'aimerais util Petit Programme [ par jarod05 ] Bonjour, Je suis à la recherche d'un code qui me permet :      de lire sur la ligne de commande en utilisant argc et argv le nbre N de processus à cré Trouver l'Hwnd avec le PID [ par Crew209 ] Bonjour j'aimerais trouver le l'HWND d'une fenètre grace au PID du process.Merci de me répondre :)Crew209 Ligne comande processus avec hwnd fenetre [ par unrealgun ] Bonjour, Je voudrais savoir comment obtenir le handle, la ligne de commande, le nom d'exe et le ID du processus correspondant a une fenetre dont j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales