Utilisation d'un SendMessage [Résolu]

Signaler
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014
-
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
-
Aprés avoir trouvé le handle d'une fenetre sur lequel il y a deux boutons, je veux simuler un clic sur le deuxieme bouton, pour ce faire je dois donc simulerTab + Entrée.

Voici ce que je fait mais ça marche pas, avez-vous une autre idée ?
<ol><li>SendMessage(handle, WM_KEYDOWN, VK_TAB, 1);
</li><li>SendMessage(handle, WM_KEYDOWN, VK_RETURN, 1);</li></ol>merci de votre aide.

7 réponses

Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
1
  // Attention espace à la fin !!!! 
  // Voilà une raison de plus de ne pas utiliser cette méthode
  MonHandle := FindWindow('SALSUBFRAME', 'OpenOffice.org 2.1 '); 

  // Mise au premier plan de la fenetre
  Windows.BringWindowToTop(MonHandle);

  // petit délai
  sleep(20);
 
  // Simulation appui de la touche I du "ignorer" 
  PostMessage(MonHandle, WM_CHAR, ord('i') ,0);


P.S. Comme je te l'ai dit sur l'autre post, je désapprouve totalement cette méthode, mais si elle te convient ...

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

Merci de ta réponse mais apres avoir etudier le source est extrait le code qui m'interesse , je viens de me rendre compte que les boutons ont le meme handle que la fentre qu'il contient donc impossible en théorie d'attaquer directement le bouton qui m'interesse, voici le code que j'utilise :

  monhandle5 := FindWindow(nil, PChar(UpperCase('OpenOffice.org 2.0 '))); //Retrouve le Handle de la fenêtre principale
  Showmessage(IntToStr(monhandle5));


   monhandle6 := FindWindowEx(monhandle5, 0, nil, PChar(UpperCase('Annuler')));
   Showmessage(IntToStr(monhandle6));


   SendMessage(monhandle6, BM_CLICK, 0, 0);  //on clique dessus
Messages postés
3815
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
4 août 2020
35
Essaye voir sans utiliser PChar et UpperCase
FindWindowEx(MonHandle5, 0, nil, 'Annuler');

Et si le bouton à un ShortCut (une lettre soulignée) 
"Annuler" :
FindWindowEx(MonHandle5, 0, nil, '&Annuler');

"Annuler" :

FindWindowEx(MonHandle5, 0, nil, 'A&nnuler');

PS : les lettres soulignées n'apparaissent qu'en appuyant sur "Alt"

 
@+
Cirec

<hr siz="" />
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

Merci de votre aide, mais le probleme c'est que la fenetre sur lequel je souhaite cliquer sur son bouton Ignorer à le même handle que son bouton, il faudrait donc que je mette le focus dessus la fenetre et que je fasse TAB + Entrée pour que ca puisse marcher.

Probleme je sais pas comment faire.

Si quelqu'un à une idée ...

PS : La fenetre qui à le même handle que ses boutons, c'est la demande d'enregistrement d'Open Office 2 quand on veut sortir sans avoir enregistrer
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

je ne les ai jamais utilisé, mais t'arrive pas avec à faire ce que tu veux avec les API de OO ?

http://api.openoffice.org/

genre, y a une source vb qui fait quelques trucs avec OO et OLE:
http://www.vbfrance.com/code.aspx?ID=20435

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
"le probleme c'est que la fenetre sur lequel je souhaite cliquer sur son bouton Ignorer à le même handle que son bouton"
c'est possible ca?
essaye avec spy++ ou winsight pour etre sur, mais pour moi, c'est pas possble que 2 objets aient le meme handle
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

Pour moi c'est un meme objet avec des zones qui réagissent différement et qui prennent visuellement la forme de bouton.