Accueil > Forum > > > > Distinguer des fenêtres qui ont le même handle
Distinguer des fenêtres qui ont le même handle
mercredi 20 août 2008 à 22:25:10 |
Distinguer des fenêtres qui ont le même handle

Lustuc
|
Bonjour, Ma question est sans doute un peu bête, mais je nage un peu avec les handle. J'ai une application qui ouvre plusieurs fenêtres, je voudrais pouvoir avoir le handle spécifique de l'une d'entre elle, or elles ont toute le même... J'ai cru comprendre qui y a la notion de parent au niveau des handle. En gros je cherche à voir celui d'un des enfants  Si il y avait une bonne âme pour me montrer la lumière dans ce monde obscure des handle ça serait bien sympa...
|
|
jeudi 21 août 2008 à 00:43:06 |
Re : Distinguer des fenêtres qui ont le même handle

juju12
|
plusieurs fenêtres ne peuvent pas avoir le même hwnd, à moins que ton application dessine elle-même les fenêtres sur un fond commun, mais dans ce cas on n'est plus vraiment dans le contexte des fenêtres de l'API. Est-ce le cas? Sinon comment récupères-tu tes handle? Je veux dire, quel code emploies-tu (avec quels résultats) pour pouvoir dire que les fenêtres ont le même hwnd? Les fonctions utiles pour trouver les fenêtres enfants sont par exemple EnumChildWindows(), ou FindWindowEx()...
|
|
jeudi 21 août 2008 à 01:40:58 |
Re : Distinguer des fenêtres qui ont le même handle

Lustuc
|
Le code est le suivant :
char caption[255];
Sleep(5000); // j'ai 5 seconde pour passer la première fenêtre en active
GetWindowText(GetForegroundWindow(),caption,255); printf("le titre est: %s\n", caption); HANDLE HWND1 = FindWindow(NULL,caption); printf("le handle de la fenetre 1 est : %X\n\n", HWND1); Sleep(5000); // j'ai 5 seconde pour passer la deuxième fenêtre en active
GetWindowText(GetForegroundWindow(),caption,255); printf("le titre est: %s\n", caption); HANDLE HWND2 = FindWindow(NULL,caption); printf("le handle de la fenetre 2 est : %X\n\n", HWND2); En résultat, il m'affiche le titre de la 1ère fenêtre avec "1008A" pour Handle
puis le titre de la seconde fenêtre avec toujours "1008A" pour Handle
L'appli génère des fenêtres, mais ces dernières ne sont pas identiques et n'ont pas la même fonction, notamment la fenêtre parent et les fenêtres enfants.
|
|
jeudi 21 août 2008 à 09:20:25 |
Re : Distinguer des fenêtres qui ont le même handle

fregolo52
|
Si tu maitrises tout, c'est a dire que tu accès au code source des fenetres que tu ouvres, tu devrais passer en mode debug et regarder à qui appartient ce handle. Si pour chaque fenetre tu as fait un CreateWindow, elles devraient toutes avoir des handles différents.
Sinon as-tu testé le retour de GetForegroundWindow() ? Pour voir si c'est les mêmes que la fonction FindWindow.
|
|
jeudi 21 août 2008 à 11:24:43 |
Re : Distinguer des fenêtres qui ont le même handle

Lustuc
|
Il s'agit d'applications externes dont je n'ai pas accès au code. Je début en C, comment fais-tu pour tester le code retour? 
|
|
jeudi 21 août 2008 à 13:17:42 |
Re : Distinguer des fenêtres qui ont le même handle

fregolo52
|
GetForegroundWindow() tu retournes le handle (hwnd) de la fenetre active de Windows (je crois). J'aime pas trop FindWindow. Essaie EnumWindows. Voici mon code avec EmunChildWindows (que tu adapteras pour EnumWindows et tes besoins) qui change les libelles des controles de la fenetre dans la langue désirée :
static BOOL CALLBACK EnumControlsForLanguage( HWND hwnd, // handle to child window LPARAM lParam // application-defined value ) { CString cs; int id = GetDlgCtrlID(hwnd); cs.LoadString(id); SetWindowText(hwnd, cs); return TRUE; }
EnumChildWindows(this->m_hWnd, EnumControlsForLanguage, NULL);
|
|
jeudi 21 août 2008 à 13:59:16 |
Re : Distinguer des fenêtres qui ont le même handle

Lustuc
|
OK merci je vais essayer ce soir...
|
|
vendredi 22 août 2008 à 12:29:10 |
Re : Distinguer des fenêtres qui ont le même handle

Lustuc
|
Réponse acceptée !
ça a marché ! ! ! avec EnumWindows. Voici le code qui m'a permi d'afficher tous les handle avec les titres des fenêtres. Les fenêtres qui apparaissaient avec le même handle avec la fonction FindWindow, ont ici des handle bien distincts: La fonction : BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { char caption[255]; HWND hwndTable; if(IsWindowVisible(hwnd)) { printf("handle %X\n", hwnd); GetWindowText(hwnd,caption,255); printf("titre : %s\n\n", caption); } return TRUE; } Appel à la fonction: EnumWindows(EnumWindowsProc, 0); Merci pour votre aide, A+ Lustuc
|
|
Cette discussion est classée dans : handle, fenêtres, distinguer
Répondre à ce message
Sujets en rapport avec ce message
Récupérer un handle de fenêtre [ par tintin72 ]
Bonjour, Je programme une classe 'Splitter' qui a besoin de récupérer le handle des fenêtres filles pour les agencer dans la fenêtre hote. J'ai donc
ICON buton [ par abdoulax ]
Encore une question, Je voudrai insérer une icone dans un bouton voici ce que g trouvé : SendMessage(HWND,BM_SETIMAGE,(WPARAM) IMAGE_ICON,(LPARAM)hand
CopyFileEx() [ par apacheswiss ]
Bonjour, je souhaite utilisé la fonction CopyFileEx()mais lors de la compilation , j'ai lerreur suivanteerror C2664: 'CopyFileExA' : cannot convert pa
Handle child subclassée [ par NeoUmbrella ]
Hello,J'aimerais savoir comment récupérer l'hande d'une fenetre child venant d'etre créée sachant que j'ai subclassé la fenetre mdi et que j'intercept
Tuto pour les fenêtres windows [ par rastacouer ]
Bonjour,Malgré mes recherches sur le forum sur ce sujet, j'ai rien trouvé, même si je m'attend quand même à ce que vous ayez déjà vu ce genre de topic
HANDLE de fichiers [ par vecchio56 ]
Salut J'ai un programme qui travaille sur des fichiers, et l'utilisateur peut enregistrer le fichier quand il le veut. La question que je me pose est
PROCESS_QUERY_INFORMATION [ par vecchio56 ]
Bonjour Je cherche à ajouter le droit PROCESS_QUERY_INFORMATION à une HANDLE de process pour pouvoir ensuite utiliser GetProcessId. La seule chose don
Gestion des messages windows pour des fenêtres - pointeurs de fonctions [ par neodelphi ]
Bonjour tout le monde Je suis en train de faire un programme qui utilise directX et qui doit créer une fenêtre windows. J'ai suivi les exemples que
ODBC : ERROR : LNK 2019 [ par forfait3 ]
Bonjour,je développe une application qui doit se connecter à une base de données sous SQL Server 2000 SP3.Le développement se fait en C++ sous Visual
Fenêtres pop up [ par Pingouin57 ]
Salut tout le monde, Enfait je voulais savoir comment on peut faire une petite fenêtre qui s'ouvre dans un coin devant toutes les autres, pour affic
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|