semenzato
Messages postés9Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention27 octobre 2003 16 oct. 2003 à 09:06
Je n'arrive pas à envoyer la touche tab par des messages de fenetre mais par contre j'essaye d'utiliser la fonction sendinput mais la structure INPUT n'est^pas reconnu alors qu'elle est bien declarer
semenzato
Messages postés9Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention27 octobre 2003 16 oct. 2003 à 11:10
Merci beaucoup pour ta réponse mais finalement j'ai abandonné l'option sendinput.
Mon but était d'appuyer fictivement sur un bouton(bouton executer du programme) d'un autre programme ecrit en Delphi.
Je dois donc recuperer l'IDcontrol du bouton concerné , je recupere donc l'HANDLE de la fenetre principale avec findwindow et c'a fonctionne bien.
Par contre quand je regarde avec Spy++ pour trouver l'ID du bouton , je remarque que celui ci change toujours et il est equivalent au handle du bouton , je ne comprend pas je croyais que le ID était fixe.
J'aimerais savoir si il est possible de recuperer l'Handle du bouton sans connaitre le ID car il s'agit de la même valeur.
Ensuite , si je reussit a avoir l'id ou le handle comment est ce que je peut lui dire de s'enclencher , est ce que je peut lui envoyer la touche "entrée" , si oui quelle est cette touche.
Je te remercie de ton aide qui est vraiment super
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 16 oct. 2003 à 11:23
Non pas la touche Entree mais:
PostMessage(hDest, WM_COMMAND, idbutton, (long) hButton);
Certain que hbutton == idbutton ??? Jamais vu cela.
BruNews, ciao...
semenzato
Messages postés9Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention27 octobre 2003 16 oct. 2003 à 12:10
Je suis sur que hbutton == idbutton.
peut etre parce que c'est une application delphi?
dans ce cas est ce qu'il est possible d'avoir directement le handle du bouton ou alors d'envoyer a la fenetre des tabulations pour en voyer le focus sur le bouton puis envoyer une touche virtuelle "entrée"
merci
petite parenthèse : est ce qu'il est possible d'appuyer sur la touche play de winamp dans un programme sachant que winamp n'est pas une application dialog
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 16 oct. 2003 à 12:24
Fais une enum des child de la fenetre, si tu connais le titre du bouton tu le trouveras. Voir EnumChildWindows() dans msdn.
winamp, je ne connais pas.
BruNews, ciao...
semenzato
Messages postés9Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention27 octobre 2003 16 oct. 2003 à 16:40
merci pour cette info , mais malheureusement encore je n'arrive pas a utiliser cette fonction , je n'arrive pas a utiliser la fonction de rappel (callback) pour pouvoir récupérer les valeurs.
de plus je ne connais pas les paramètres a rentrer dans le troisième argument .
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 16 oct. 2003 à 17:04
Faut etudier MSDN et j'ai deja mis des sources faisant de l'enum, faut fouiller un peu.
szcaption est titre button recherche.
HWND hbutton = 0;
Je n'utilise pas le 2eme param dans ce cas.
BOOL CALLBACK EnumButtonsProc(HWND hwnd, LPARAM a)
{
char buff[40]; // tu vois si trop, mais multiple de 4 !
buff[0] = 0;
GetClassName(hwnd, buff, 10);
if(strcmp(buff, "BUTTON")) goto suivant;
GetWindowText(hwnd, buff, 40);
if(strcmp(buff, szcaption)) goto suivant;
hbutton = hwnd; // OK fini on sort
return 0;
suivant: return 1;
}
ICI EST LE LANCEUR
EnumChildWindows(hparent, EnumButtonsProc, 0);