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() :D

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