Page 1 sur 1
cliquer sur un onglet
Posté : lun. 03 avr. 2023 11:32
par Raph
bonjour,
Dans le cadre de mon activité de responsable IT, je cherche à automatiser l'installation d'imprimante sur les postes de nos clients. Cette installation nécessite le paramétrage du pilote, en renseignant certains champs . Afin d'accéder à ces champs, il faut cliquer sur des onglets
Je n'arrive pas à automatiser via la commande ControlClick le click sur l'onglet 'Autres' par exemple
J'ai utilisé l'utilitaire AutoIT V3 Window Info pour connaitre la classe et l'ID de l'onglet en question, mais ça ne sélectionne pas l'onglet désiré
Ci-joint copie d'écran en pièce jointe, où apparaissent le code .au3 , ainsi que la GUI du pilote et les infos données par AutoIT V3 Window Info
Merci de votre aide
Re: cliquer sur un onglet
Posté : lun. 03 avr. 2023 12:52
par TommyDDR
Dans AutoIT V3 Window Info, vous avez une ligne "ControlClick Coord", inscrivez les dans la fonction ControlClick
ControlClick("Option d´impression KONICA", "", "[ID:12320]", "left", "1", 510, 10)
(Vérifiez le nom de fenêtre, je n'ai peut être pas choisi le bon apostrophe)
Re: cliquer sur un onglet
Posté : lun. 03 avr. 2023 18:44
par walkson
Bonjour,
Ça serait peut être plus simple avec
ControlCommand()
Code : Tout sélectionner
If ProcessExists("AutoIt3Help.exe") Then ProcessClose("AutoIt3Help.exe")
Run("C:\Program Files\AutoIt3\SciTE\Aide\AutoIt3Help.exe")
Sleep(500)
WinActive("Aide AutoIt", "");vérifier le titre de la fenêtre
For $i = 1 To 2
ControlCommand("Aide AutoIt","","SysTabControl321","TabRight", "")
Next
MsgBox(64,"N° Tab",ControlCommand("Aide AutoIt", "", "SysTabControl321","CurrentTab", ""))
ControlSetText("Aide AutoIt", "", "Edit1", "ControlSetText")
Sleep(500)
ControlClick("Aide AutoIt", "", "Button2")
Sleep(2000)
ControlCommand("Aide AutoIt","","SysTabControl321","TabLeft", "")
Re: cliquer sur un onglet
Posté : mer. 05 avr. 2023 10:57
par Raph
bonjour, j'ai résolu le problème , après quelques essais, avec la fonction Send("^{TAB 7}" ) Le chiffre 7 indique que la tabulation est demandée 7 fois de suite . Je précise qu'il est nécessaire d'utiliser la fonction WinActivate() dans le script et avant la fonction Send() , sinon ça ne marche pas. Ci-joint copie d'écran du script
si certains ont une méthode pour atteindre DIRECTEMENT un onglet via son nom, je suis preneur. J'ai eu beau rechercher un peu partout, impossible de faire fonctionner la fonction CommandControl ou ControlClick (j'ai dû zapper un élément dedans)
salutations
Re: cliquer sur un onglet
Posté : mer. 05 avr. 2023 14:43
par walkson
Bonjour,
Vérifiez le titre de la fenêtre
Code : Tout sélectionner
#include <GuiTab.au3>
$WindowTitle = "Option d´impression KONICA"
$Control = "SysTabControl321"
$hdl = WinActivate($WindowTitle)
$hWnd = ControlGetHandle($hdl, "", $Control)
ConsoleWrite($hWnd & @CRLF)
$idx = _GUICtrlTab_FindTab ( $hWnd, "Autres")
_GUICtrlTab_ClickTab ( $hWnd, $idx)
J'ai testé le code sur les options de mon imprimante et ça fonctionne (même class, même ID, même control etc...)
Si le handle retourne 0 dans la console, c'est qu'il y a une erreur... (titre ?)
Re: cliquer sur un onglet
Posté : jeu. 06 avr. 2023 15:43
par Raph
Ca retourne 0 dans la console... Misère, j'ai tout essayé, même Mouseclick() en désespoir de cause, mais le curseur ne vend pas bouger
Re: cliquer sur un onglet
Posté : jeu. 06 avr. 2023 16:14
par walkson
Bonjour,
Faites un copier-coller du titre à partir de AutoIT V3 Window Info sinon il y a
Opt("WinTitleMatchMode", 1) ;1=début, 2=sous-chaîne, 3=exact, 4=avancé, -1 à -4=NOCASE
à mettre en début de code à tester selon les options (souvent 2 ou 4). Après, il y a des fenêtres qui restent inaccessibles, ça arrive
lancer ce code (raccourcis Alt x pour lancer la fonction et Echap pour sortir)
Lancer la fenêtre KONICA qui doit être en premier plan puis Alt x
Code : Tout sélectionner
HotKeySet("!x", "test");Alt x
HotKeySet("{Esc}", "Fin");Echap
While 1
Sleep(100)
WEnd
Func test()
$Hactive = WinActive("[ACTIVE]")
$titre = WinGetTitle($Hactive,"")
ConsoleWrite($Hactive &"--"& $titre & @CRLF)
$hWnd = ControlGetHandle($Hactive, "", "SysTabControl321")
ConsoleWrite($hWnd & @CRLF)
EndFunc
Func Fin()
Exit
EndFunc
Dans la console vous devez avoir le Handle de la fenêtre Konica et le Handle des tab. Si c'est toujours 0, c'est sans espoir