Form Handle & FindWindow [Résolu]

Messages postés
520
Date d'inscription
vendredi 30 juillet 2004
Dernière intervention
3 mars 2008
- - Dernière réponse : cs_spandex
Messages postés
5
Date d'inscription
lundi 10 mars 2003
Dernière intervention
5 février 2007
- 3 déc. 2006 à 22:49
Bonjour,

j'ai le probleme suivante:
- J'ai une classe dans laquelle je souhaite récupérer le handle de mon formulaire principal. Je lance donc un FindWindow avec le nom de la fenetre:
Dim h As Long = Me.FindWindow(String.Empty, "Domotix")
---> me retourne 222083760919674880

Cependant, quand, dans mon formulaire, je tape
msgbox(me.handle)
---> me retourne 460968

Ce que je ne comprends pas, c'est pourkoi ces 2 handle n'ont pas la même valeur
A t on des handle "vb.net" et d'autre handle "windows" pour la meme fenetre ???

Merci d'avance

Olixelle
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
3
Merci
Non intptr et long, ce n'est pas la même chose.
La déclaration de l'api en dotnet est :
PrivateDeclareFunction FindWindow Lib"user32"Alias"FindWindowA" (ByVal lpClassName AsString, ByVal lpWindowName AsString) AsIntegerEn vb6, long 32bits, en dotnet long 64bits et integer = 32bits

Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
520
Date d'inscription
vendredi 30 juillet 2004
Dernière intervention
3 mars 2008
3
Merci
Saluit Charles,

effectivement mon erreur venait l'import de l'api...
la bonne chose a faire en dotnet est:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr

En tout cas merci pour votre aide :)

A bientot

Olixelle

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de olixelle
Messages postés
884
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
3 mars 2009
0
Merci
Un handle c'est pas sensé rentrer dans un Integer (le Long du VB6) ? Donc 222 083 760 919 674 880 est beaucoup trop grand, (même pour un long c'est beaucoup non ?). Quand tu mets "me retourne 222083760919674880", c'est h tu veux dire ? ou Me.FindWindow(String.Empty, "Domotix") ? Parce que me c'est pas sensé renvoyer un nombre...

Julien.
Commenter la réponse de Julien237
Messages postés
520
Date d'inscription
vendredi 30 juillet 2004
Dernière intervention
3 mars 2008
0
Merci
me.findwindow retourne un long (ou intptr c la mm chose)
me.handle retourne un integer...

c bien la le sujet de mon interrogation
Commenter la réponse de olixelle
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
ATTENTION Olixelle

La valeur de retour de FindWindows, ce n'est pas IntPtr, c'est Integer, ou Int32.

Integer est un type de variable de 32 bits.
IntPtr est une structure servant à décrire un pointeur, ça n'a rien voir.

Si tu laisse IntPtr tu auras surrement tot ou tard des plantages.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
520
Date d'inscription
vendredi 30 juillet 2004
Dernière intervention
3 mars 2008
0
Merci
ben en .net, long & integer ne fonctionnent pas...
seul la déclaration avec intptr fonctionne
Commenter la réponse de olixelle
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
olixelle à raison, l'api renvoie bien un pointeur. comme la propriété handle



Kenji
Commenter la réponse de Charles Racaud
Messages postés
5
Date d'inscription
lundi 10 mars 2003
Dernière intervention
5 février 2007
0
Merci
Bonjour,

j'essaye aussi d'utilisé l'api FindWindow, mais malgrés tout  ce que j'ai pu en lire ici et la, je n'arrive toujours pas a récupéré l'handle de la fenetre que je cherche ( l'api me retourne 0 ).

je la declare pourtant comme olixelle:
Declare
Function FindWindow
Lib
"user32"
Alias
"FindWindowA" (
ByVal nom_classe
As
String,
ByVal nom_fenetre
As
String)
As IntPtr

et l'utilise comme cela:

Dim CalHwnd
As IntPtr

CalHwnd = FindWindow(
String.Empty,
"Calculatrice")

Alors si vous aviez des conseils a me donner je suis prenneur

Ps: j'ai aussi essayer en remplacement  le IntPtr par un Integer et un Int32 ( ainsi que par un long en desepoire de cause  ) suite a la remarque de casy

Spandex
Commenter la réponse de cs_spandex

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.