J arrive pas a envoyer des messages à une autre fenetre

fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004 - 26 janv. 2004 à 15:47
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004 - 27 janv. 2004 à 20:20
Salut a vous, j ai découvert le site hier soir en cherchant des info pour mon bout d application que je suis en train de faire.

Alors le but de celle-ci est de lancer une page internet explorer, puis à partir de celle-ci de faire des opérations simple (tapper des caractères dans une zone de saisie, cliquer sur des boutons).

Alors jusque là je suis arrivé a lancé ma page avec :

HWND m_hFenetre = NULL;
ShellExecute(m_hFenetre, "open", "http://www.msn.fr", 0,0,SW_NORMAL);

Donc moi a partir de cet hundle je voulais avec PostMessage() envoyer a ma nouvelle page, mais ça n marche pas.

Donc le probleme doit etre que j ai pas inclue un fichier, ou alors j ai pas hérité dde qq chose mais j n c pas.

Remarque : Je suis dans la fonction qui est appelée (fonction de la dlg) qd on clique sur le bouton

Voila j'espere avoir été assez précis

Un petit qui debute

16 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 15:53
"a partir de ce handle..." ???
mais je n'en vois aucun dans ton code si ce n'est m_hFenetre qui vaut NULL et le restera donc inutile.
ShellExecute() ne prenant pas de pointeur, aucun risque qu'il te remplisse un handle.
ciao...
BruNews, Admin CS.
0
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004
26 janv. 2004 à 16:59
Je viens de relire la page, et je m etais trompé :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp

Le hundle de cette commande permet de donner l hundle de la fenetre parent et non comme je n l pensais de recup celle de la nouvelle fenetre. :blush)

Donc il existe qu elle fonction qui permet de récupérer l hundle de la nouvelle fenetre ????

Merci à BruNews

Un petit qui debute
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 17:10
Si tu lances un EnumWindows juste apres ShellExecute, la 1ere trouvee avec "IEFrame" en ClassName devrait etre la bonne.
C'est pour la methode code simple et NON 100% garanti mais devrait aller.

La sure et certaine, faut lancer par CreateProcess et tu pourras determiner la fenetre cree avec le pi.hTrhread.
C'est evidemment plus delicat mais pas si difficile.

ciao...
BruNews, Admin CS.
0
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004
26 janv. 2004 à 17:48
Coucou c encore moi

Alors j'ai décidé d'utiliser CreateProcess
J'ai reussit a lancer explorer.exe, mais j arrive pas a demarrer directement sur la page qui m interresse :(, je peux arriver a m'en passer mais en utilisant PostMessage, mais qd j veux l utiliser je n peux pas et qd je met :: je n la voit meme pas.
A quoi ça peut etre due, merci ??

Un petit qui debute
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 18:03
Non tu ne dois pas te passer de quoi que ce soit.
Met en commentaire les lignes qui cherchent la fenetre, chaque chose en son temps. Faut d'abord trouver comment passer la page en param, quand sera bon tu me mettras la partie CreateProcess valide ici et on decoincera le reste.
OK ?
ciao...
BruNews, Admin CS.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 21:37
Bon ça dit quoi ton affaire ?
J'ai fait un CreateProcess qui ouvre direct sur mon site, c'est donc possible.
Si blocage, dis sur quel point.
ciao...
BruNews, Admin CS.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 22:27
http://www.cppfrance.com/code.aspx?ID=19814
Je te l'ai fait, tu iras voir.
ciao...
BruNews, Admin CS.
0
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004
26 janv. 2004 à 22:56
1er chose : Merci a BruNews qui m'aide énormement.
2ieme chose : j'avais fait une petite pause pour me changer les idées. La solution que tu utilises pour la page d'internet explorer, commençait a me trotter dans la tête.

J'ai déjà due entendre ça quelque part, mais ça sert a quoi de fermer l'hundle sur la fenêtre (surtout que tu le fait a chaque fois apres avoir toucher à la fenêtre). C'est pour le laisser libre pour que autre application qui peut tourner en arrière plan puisse l'utiliser ????

Un petit qui debute
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 23:08
Quand je ferme un handle de fenetre ?
Un handle de fenetre ne se ferme pas, c'est un des rares d'ailleurs. C'est le systeme qui s'en occupe quand on detruit la fenetre.
ciao...
BruNews, Admin CS.
0
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004
26 janv. 2004 à 23:19
Dans c cas à quoi corresponde ces lignes :

CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);

Et c quoi la différence en hThread et hProcess ???

Un petit qui debute
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 23:34
La ça va etre trop long a taper, je vais te passer 2 livres a etudier:
http://brunews.free.fr/
CP5.zip et CP5Sources.zip
JR4.zip et JR4Sources.zip

Faut commencer par CP5 qui est plus abordable.
La prog systeme (thread, processus etc...) est dans Richter, jette un oeil pour avoir un debut de reponse mais repasse de suite au Petzold car Richter presuppose que tu connais bien le mode GUI win32.

ciao...
BruNews, Admin CS.
0
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004
26 janv. 2004 à 23:45
Bin dis donc t super calé toi !!!!

Ca t'arrive de bloquer sur des problèmes ????
C'est ton travail la programmation ???

Il me reste un dernier probleme que j'arrive pas a résoudre :
J'arrive pas a avoir la fonction PostMessage(), pourtant j'ai un autre projet où j'ai réussit à l'utiliser mais ça date de qq mois déjà. Alors j'aimerai savoir s'il y a des choses particulière à savoir (inclusion, héritage, ...)

ciao...

Un petit qui debute
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 janv. 2004 à 23:58
heritage n'a rien a faire avec PostMessage qui se differencie de SendMessage par son mode asynchrone, c'est a dire non blocant. La fonction retourne immediatement, elle ne fait que placer les params sur la file d'appels du thread cible.
Avec PostMessage on evite d'etre emmene dans le lantage eventuel du prog cible mais ne pas perdre de vue que certains messages peuvent etre supprimes ou alors traites bien plus tard, ce qui revient parfois au meme.
Tout dependra donc du type de message et de la cible.
ciao...
BruNews, Admin CS.
0
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004
27 janv. 2004 à 14:38
Coucou c encore moi

La c la dernière question apres j proposerai mon programme dans les sources :)

Alors j'ai ouvert une nouvelle fenêtre sur le site que je veux, j ai donc alors récupéré des info de celle-ci dans les variable si et pi. Mais pour ::PostMessage() il faut comme 1er paramètre un HWND, que j n c où retrouver.

Un petit qui debute
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 janv. 2004 à 15:00
C'est fait dans l'exemple que je t'ai mis en souce.
Au lieu de lui poster un message, j'ai changé son titre.
Va analyser le code et regarde comment je trouve le handle (HWND) de la 1ere fenetre de ce nouveau thread.
ciao...
BruNews, Admin CS.
0
fana13 Messages postés 12 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 février 2004
27 janv. 2004 à 20:20
Après avoir refait mon projet au propre, j'arrive a envoyer mes messages à ma nouvelle fenêtre, mais malheureusement j'ai mon hundle qui pointe sur la fenêtre en général (donc j peux modifier le nom de celle-ci) mais je voudrais savoir comment récupérer l'hundle sur la zone d'affichage (sous word c la fenêtre où l'on tappe le texte) où également appelé "internet explorer_server" sous spy++

Remarque cette zone à toujour le même num de style soit 56 000 000.

On doit pouvoir récupérer cet hundle avec threadID ou le ProcessId que j ai déjà au moment de créer la fenêtre.

Un petit qui debute
0
Rejoignez-nous