begin process at 2008 08 08 23:24:03
1 223 648 membres
406 nouveaux aujourd'hui
14 230 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Utilisation d'un SendMessage [ Système / Autre ] (vieuxpere)

Utilisation d'un SendMessage le 03/12/2007 16:35:07

vieuxpere
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 ?
  1. SendMessage(handle, WM_KEYDOWN, VK_TAB, 1);
  2. SendMessage(handle, WM_KEYDOWN, VK_RETURN, 1);

merci de votre aide.


Re : Utilisation d'un SendMessage le 03/12/2007 17:37:29

cirec
Membre Club
(Admin CS)
Salut,

une petite recherche sur le site t'aurais permis de trouver ton bonheur :
http://www.delphifr.com/codes/CLIQUER-SUR-BOUTON-AUTRE-APPLICATION_21452.aspx

 
@+
Cirec


Re : Utilisation d'un SendMessage le 03/12/2007 18:24:51

vieuxpere

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


Re : Utilisation d'un SendMessage le 03/12/2007 19:06:30

cirec
Membre Club
(Admin CS)
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


Re : Utilisation d'un SendMessage le 03/12/2007 21:08:58

vieuxpere
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

Re : Utilisation d'un SendMessage le 03/12/2007 21:21:26

Loda
Membre Club
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

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

Re : Utilisation d'un SendMessage le 03/12/2007 21:46:01

Guillemouze
"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

Re : Utilisation d'un SendMessage le 03/12/2007 22:55:40

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

Re : Utilisation d'un SendMessage le 04/12/2007 01:21:31

WhiteHippo
Membre Club
Réponse acceptée !
  // 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.

"L'imagination est plus importante que le savoir." Albert Einstein


Classé sous : sendmessage, utilisation, handle, wm, keydown

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS