|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
Bonjour,
Je voudrais accéder à une fenêtre IE8 qui est ouverte par un autre programme. Le soucis, c'est que le processus ne s'appelle pas iexplorer.exe, mais porte le nom du programme qui l'ouvre. Sur les machines, IE6 est installé, et IE8 est ouvert à partir d'un serveur distant. Je ne pourrais pas vous expliquer comment, mais IE8 est chargé sur les ordinateurs clients au lancement d'une application. J'ai besoin d'accéder à IE8 pour remplir automatiquement des formulaires qui sont présents sur la page. Avez vous une idée ? Je dois passer par le Handle de la fenêtre? Par le nom du precessus? Merci de votre aide. |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
As tu essayer d'utiliser GetObject, pour voir si la fenêtre IE8 est "capturée? Code :
Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||
|
|
00
|
|
|
#3 | ||
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
Salut, j'ai une erreur d'automation avec ton code...
Mais je ne pense pas pouvoir recuperer IE8 de cette manière car le processus ne pote pas le nom iexplorer.exe... J'avais essayé ça : Code :
|
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Dans ce cas essai d'utiliser FindWindow pour trouver le handle de ta fenêtre, dans un premier temps ça t'indiquera déjà s'il est possible d'interagir avec elle, il faudrait que je teste au boulot, on a aussi un IE distant via un server Citrix...(et oui on a pas tous les jour de la chance...) ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
Je suis dans le même cas que toi
J'arrive à toucher le handle de la fenetre avec le nom de cette dernière donc je dois pouvoir bricoler quelque chose... J'ai installé WinID, j'arrive à activer la fenêtre au premier plan, grâce à son Handle, mais je n'arrive pas à accéder aux liens qui sont dans la page web... Il n'ont pas de handle. Peut être qu'il y a une methode pour parcourir tous le contenu de la page... Je veux dans un premier temps simuler un clique sur un lien. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Le premier soucis est de dire que tel handle correspond à une instance d'IE et pour le moment je vois pas comment faire :p Une piste serait peut être GetWindowLong, qui donne le handle de l'instance parent, qui je pense doit être l'instance d'IE, mais ici on a que l'handle il faut encore le passer à un variable object... à suivre. ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
|
|
#7 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
C'est exactement le soucis que j'ai...
Soit j'arrive à faire avaler à VBA que le handle de ma fenetre est belle et bien du IE... Soit j'utilise les handles et Sendmessage pour naviguer avec le clavier... Bloqué je suis... Les API du genre : SendKey, Postmessage et autres ne font rien sur la fenetre... Pourtant si j'appuie sur tabulation au clavier, je peux me déplacer sur les différents liens... Pour info, avec WinID, lorsque je pointe ma souri sur la fenetre en question, la class est du type :"Transparent Windows Client " Donc si je pointe un lien ou un bouton de IE8, le Handle ne change pas... Comment faire? That is the question ! |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Essai peut-être avec l'API EnumWindows, elle te permettra peut-être d'obtenir la liste des fenêtres fille de la fenêtre "Transparent Windows Client". Mais encore une fois avec un appli server je ne suis pas sur qu'il soit possible de manipuler les fenêtre avec les handle, l'application que l'on a sous les yeux est une "image" de l'application qui tourne sur le server distant. Ainsi je ne suis pas sûr que les fenêtres aient des handles en local... Si j'ai le temps je ferais des teste au boulot. C'est marrant, j'ai la même configuration au taff, l'IE server est plus récent que l'IE local et certaines appli ne peuvent pas tourner en local sur IE.... parce qu'ils (service info, enfin c'est une décision de l'entreprise) refusent de nous installer Java machine.... Un nom d'appli des fois qu'on soit dans la même boite est Aïda (rien à voir avec un groupe terroriste ^^'). ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
Aîda ne me dit rien !
Et moi si je te dis : "AeroWeb"? Ou bien "Planet"? @+ |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Rien du tout ^^, j'essais de regarder dès que possible. ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
|
|
#11 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
Salut,
J'ai du mal avec EnumWindows... Je ne vois pas trop comment lister toutes les fenêtres filles... |
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
EnumChildWindows serait plus adapté en effet, il te permet de lister les handle enfants d'une fenêtre. Voila un exemple d'utilisation mais les handles trouvés ne retourne pas de nom de class, je ne comprend pas bien ce qu'il pointe. Code :
Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||
|
|
00
|
|
|
#13 | ||||
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
Tu penses qu'il y aurait moyen de bricoler un truc???
Bon et bien ca ne me list rien du tout!!! Ca marche pour les vrais programme mais pour IE8 lancé sur serveur, c'est fichu! Mais pourquoi la simulation d'appui sur une touche clavier ne marche pas??? Je voulais me deplacer avec TAB pour selectionner mon lien, mais rien a faire ca ne marche pas, alors que physiquement je peux le faire... Saloperie de class transparente fantome de m**** ![]() J'arrive à bidouiller un truque en adaptant un code VB Il faut en faite passer par le processus wfica32.exe qui correspond à citrix... Voici le lien d'origine : http://waynes-world-it.blogspot.com/...live-with.html Le code pour VBA Code :
Code :
Tout est transmis en caractère pur et dur donc si je veux envoyer un "{TAB}" le programme recevra une chaine String et non pas une commande... Je le sais car si je place le curseur sur un champ texte, je vois apparaitre le texte... Une idée? |
||||
|
|
00
|
|
|
#14 |
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 254 ![]() |
Bonjour,
As tu essayé d'utiliser WinParrot ? (Qui peut automatiser des taches sur Windows... en code) http://winparrot.fr/ |
|
|
00
|
|
|
#15 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 915 ![]() |
J'ai la solution!!!
Vu comme j'ai galeré, il ne serait pas possible de mettre ca quelque part dans la faq ? Il y a une partie citrix ou pas? Je post ca bientot! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com