Récuperer un HWND d'un HINSTANCE ?

Récuperer un HWND d'un HINSTANCE ? - C++ - Programmation

Marsh Posté le 09-04-2003 à 11:07:47    

j'aimerai Récuperer un HWND de la fenetre d'application d'un HINSTANCE recuperer par ShellExecute().
sans passer par un ::FindWindow()
c'est possible en API ?

Reply

Marsh Posté le 09-04-2003 à 11:07:47   

Reply

Marsh Posté le 09-04-2003 à 11:32:53    

Tu ne peux pas, pour la simple raison qu'il n'y a pas forcément d'hWnd associé à un hInstance. Ou alors, tu peux avoir plusieurs hWnd associés également. Plusieurs solutions :
 

  • Soit tu utilises FindWindow en passant en paramètre la classe de la fenêtre que tu peux récupérer via des utilitaires comme Spy++. (Pourquoi ne peux tu pas l'utiliser au fait ?)


  • Soit tu parcours la hiérarchie de fenêtres de premier plan via GetWindow(). A chaque fenêtre que tu trouves, tu utilises GetWindowWord() pour récupérer le hInstance de la fenêtre. Tu compares ensuite ce hInstance avec celui que tu souhaites, et s'ils collent => c'est la bonne fenêtre


  • Tu attends quelques instants (le temps de traiter quelques messages par exemple), puis tu appelles GetActiveWindow() pour récupérer le hWnd.


Bref, c'est pas simple. Je te recommande la 1ere solution.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-04-2003 à 11:40:59    

Harkonnen a écrit :

Tu ne peux pas, pour la simple raison qu'il n'y a pas forcément d'hWnd associé à un hInstance. Ou alors, tu peux avoir plusieurs hWnd associés également. Plusieurs solutions :
 

  • Soit tu utilises FindWindow en passant en paramètre la classe de la fenêtre que tu peux récupérer via des utilitaires comme Spy++. (Pourquoi ne peux tu pas l'utiliser au fait ?)


  • Soit tu parcours la hiérarchie de fenêtres de premier plan via GetWindow(). A chaque fenêtre que tu trouves, tu utilises GetWindowWord() pour récupérer le hInstance de la fenêtre. Tu compares ensuite ce hInstance avec celui que tu souhaites, et s'ils collent => c'est la bonne fenêtre


  • Tu attends quelques instants (le temps de traiter quelques messages par exemple), puis tu appelles GetActiveWindow() pour récupérer le hWnd.


Bref, c'est pas simple. Je te recommande la 1ere solution.
 


 
 
Merci pour ces infos.
Je ne peux pas utiliser findWindow car je lance plusieurs instances de la meme appli. Et bien sur findwindow ne peut me trouver que la premiere fenetre.  
Je pense que je vais essayer ta solution numeros 2.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed