[Autoit] Communication entre deux programmes
Résolu/Fermé
A voir également:
- [Autoit] Communication entre deux programmes
- Itinéraire google map entre deux adresses - Guide
- Deux ecran pc - Guide
- Le protocole assure que la communication entre l'ordinateur d'adèle et le serveur de sa banque est car les informations seront avant d'être envoyées. - Forum Facebook
- Faire deux colonnes sur word - Guide
- Deux comptes whatsapp - Guide
2 réponses
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
16 mai 2013 à 10:35
16 mai 2013 à 10:35
Salut Casozu,
Je ne comprend pas très bien en quoi consiste ton "programme déjà fait" dont la "fenêtre" serait "cachée". Si ton programme a une fenêtre "cachée", et que cette fenêtre sert à quelque chose pour l'utilisateur, l'utilisateur doit bien avoir un moyen de la faire "apparaître" pour s'en servir. Utilise le même moyen avec AutoIt.
Ensuite, un des moyens les plus fiables d'intéragir avec une fenêtre avec AutoIt est de récupérer son "Handle" Windows.
Tu le fais avec la fonction AutoIt WinGetHandle.
https://www.autoitscript.com/autoit3/docs/functions/WinGetHandle.htm
Dans l'exemple fournit, WinGetHandle est utilisé avec une recherche de nom de fenêtre précédée de la propriété "CLASS" (qui décrit la "internal window classname"). Si la fenêtre n'a pas de titre, ou que la recherche par titre n'est pas fiable, c'est aussi un bon moyen d'identification. Tu trouves le nom de classe interne de la fenêtre en utilisant le programme AutoIt Window Info, fournit avec AutoIt.
Avec le même outil, tu peux récupérer le nom des contrôles sur lesquels tu veux agir (les boutons, etc.).
Une fois que tu disposes du Handle de la fenêtre, et du nom du contrôle, tu peux utiliser ces informations pour accéder à la fenêtre et ses éléments, que celle-ci soit visible ou pas, qu'elle ait le focus ou pas, dès lors que la fenêtre existe, bien sûr.
https://www.autoitscript.com/autoit3/docs/functions/ControlSend.htm
https://www.autoitscript.com/autoit3/docs/intro/controls.htm
Dal
Je ne comprend pas très bien en quoi consiste ton "programme déjà fait" dont la "fenêtre" serait "cachée". Si ton programme a une fenêtre "cachée", et que cette fenêtre sert à quelque chose pour l'utilisateur, l'utilisateur doit bien avoir un moyen de la faire "apparaître" pour s'en servir. Utilise le même moyen avec AutoIt.
Ensuite, un des moyens les plus fiables d'intéragir avec une fenêtre avec AutoIt est de récupérer son "Handle" Windows.
Tu le fais avec la fonction AutoIt WinGetHandle.
https://www.autoitscript.com/autoit3/docs/functions/WinGetHandle.htm
Dans l'exemple fournit, WinGetHandle est utilisé avec une recherche de nom de fenêtre précédée de la propriété "CLASS" (qui décrit la "internal window classname"). Si la fenêtre n'a pas de titre, ou que la recherche par titre n'est pas fiable, c'est aussi un bon moyen d'identification. Tu trouves le nom de classe interne de la fenêtre en utilisant le programme AutoIt Window Info, fournit avec AutoIt.
Avec le même outil, tu peux récupérer le nom des contrôles sur lesquels tu veux agir (les boutons, etc.).
Une fois que tu disposes du Handle de la fenêtre, et du nom du contrôle, tu peux utiliser ces informations pour accéder à la fenêtre et ses éléments, que celle-ci soit visible ou pas, qu'elle ait le focus ou pas, dès lors que la fenêtre existe, bien sûr.
https://www.autoitscript.com/autoit3/docs/functions/ControlSend.htm
https://www.autoitscript.com/autoit3/docs/intro/controls.htm
Dal
Bonjour Dal,
Merci avant tout pour ta réponse. J'ai utilisé l'outil AutoIt Window Info sur ma fenêtre en question (c'est une .exe), et lorsque je passe la cible sur un bouton de cette fenêtre, je n'ai aucune différence (c'est-à-dire que le handle de ma fenêtre est le même que celui du bouton).
Donc je bloque sur ça. Je ne sais pas si il existe un autre moyen, afin que mon programme puisse intéragir avec la fenêtre (.exe). Je pourrais très bien la démasquer et faire un clic avec la souris, mais ce n'est pas ça que je veux.
Merci avant tout pour ta réponse. J'ai utilisé l'outil AutoIt Window Info sur ma fenêtre en question (c'est une .exe), et lorsque je passe la cible sur un bouton de cette fenêtre, je n'ai aucune différence (c'est-à-dire que le handle de ma fenêtre est le même que celui du bouton).
Donc je bloque sur ça. Je ne sais pas si il existe un autre moyen, afin que mon programme puisse intéragir avec la fenêtre (.exe). Je pourrais très bien la démasquer et faire un clic avec la souris, mais ce n'est pas ça que je veux.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 16/05/2013 à 17:51
Modifié par [Dal] le 16/05/2013 à 17:51
Si le bouton n'est pas un contrôle standard Windows, tu ne peux pas utiliser cette méthode. Tu devras utilise Send, au lieu de ControlSend.
Il te faudra donc disposer du focus sur la fenêtre, puisque Send ne travaille que sur la fenêtre active, et envoyer un clic de souris, des raccourcis clavier (Alt-touche éventuellement existants sur le bouton) ou des tabulations et entrée dans le pire des cas.
C'est un peu du bricolage :-)
Dal
Il te faudra donc disposer du focus sur la fenêtre, puisque Send ne travaille que sur la fenêtre active, et envoyer un clic de souris, des raccourcis clavier (Alt-touche éventuellement existants sur le bouton) ou des tabulations et entrée dans le pire des cas.
C'est un peu du bricolage :-)
Dal