cliquer sur un onglet

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Raph
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 31 mars 2023 18:13
Status : Hors ligne

cliquer sur un onglet

#1

Message 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
Fichiers joints
AutoIT_Script Paramétrage du pilote.PNG
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: cliquer sur un onglet

#2

Message 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)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: cliquer sur un onglet

#3

Message 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", "")
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Raph
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 31 mars 2023 18:13
Status : Hors ligne

Re: cliquer sur un onglet

#4

Message 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
Fichiers joints
AutoIT_Script Paramétrage du pilote2.PNG
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: cliquer sur un onglet

#5

Message 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 ?)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Raph
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 31 mars 2023 18:13
Status : Hors ligne

Re: cliquer sur un onglet

#6

Message 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
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: cliquer sur un onglet

#7

Message 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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre