C'est la première fois que je poste sur ce forum. Merci de me dire si je ne suis pas assez clair dans mes explications.
je vous explique le contexte
J'ai une application qui ne peut être configurée que via son interface graphique.
Chaque fois qu'un utilisateur windows se connecte sur un ordinateur, il doit au moin etre configuré une et une seule fois.
J'au 350 PC et 500 users différent, cela fait trop de combinaison possible pour que je puisse le faire manuellement.
Cette application, c'est Citrix Receiver.
quand cette application se lance si il detecte que le login et password n'est pas mis et ouvre une nouvelle fenétre.
C'est cette derniére fenétre que je dois controler avec autoit.
Le login et password n'est lié qu'a l'ordinateur (et non pas a l'utilisateur :/)
J'avais deja réalisé un tel script avec une ancienne version de Citrix Program Neighborhood et cela fonctionnait tres bien.
Mon script autoit, arrive a detecté si celui ci n'a pas été deja configuré.
Si ce n'est pas le cas il fait ceci.
;lancement du client citrix receiver
If FileExists("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe") Then
Run("""C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe"" -showAppPicker")
else
exit
EndIf
$i = 1
;attente de l'ouverture de citrix receiver
do
Sleep(50)
$sText = WinGetTitle("[ACTIVE]")
$sCitrixHandelMain = WinGetHandle("[ACTIVE]")
$i = $i + 1
Until $sText = "Citrix Receiver" or $i = $maxi
if $i = $maxi then
exit
endIf
Do
$hwnd = _WinAPI_GetClassName(WinGetHandle("[ACTIVE]"))
Sleep(50)
Until $hwnd = "#32770"
Sleep(200)
;#32770 nom de la classe de fenetre windows pour le login et mdp pour citrix receiver
;envoie des commandes clvier pour mettre le login et mdp pour citrix receiver
Send("fermeCitrix\" & $CleICA)
Send("{TAB}")
Send("Mot de passe a envoyer")
Send("{TAB}")
Send("{SPACE}")
Send("{TAB}")
Send("{ENTER}")
;Sleep(3000)
WinClose($sCitrixHandelMain, "")
If FileExists("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe") Then
Run("""C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe"" -showAppPicker")
else
exit
EndIf
$i = 1
;attente de l'ouverture de citrix receiver
do
Sleep(50)
$sText = WinGetTitle("[ACTIVE]")
$sCitrixHandelMain = WinGetHandle("[ACTIVE]")
$i = $i + 1
Until $sText = "Citrix Receiver" or $i = $maxi
if $i = $maxi then
exit
endIf
Do
$hwnd = _WinAPI_GetClassName(WinGetHandle("[ACTIVE]"))
Sleep(50)
Until $hwnd = "#32770"
Sleep(200)
;#32770 nom de la classe de fenetre windows pour le login et mdp pour citrix receiver
;envoie des commandes clvier pour mettre le login et mdp pour citrix receiver
Send("fermeCitrix\" & $CleICA)
Send("{TAB}")
Send("Mot de passe a envoyer")
Send("{TAB}")
Send("{SPACE}")
Send("{TAB}")
Send("{ENTER}")
;Sleep(3000)
WinClose($sCitrixHandelMain, "")
La fenêtre que je dois controler a comme classname #32770 , celle ci est une sous fenetre de mon programme principal.
Le classname de mon programme principal change tout le temps.
exemple
HwndWrapper[SelfService;main;60e58ea5-8f02-4b8b-a20b-f12202ec87]
ou
HwndWrapper[SelfService;main;3abe58ea-8f02-4b8b-a20b-8fcaf2f097c]
etc...
je n'arrive pas a dire a autoit de reprendre le controle de cette sous fenetre quand je perd la main.
ControlFocus("[CLASS:#32770]", "", "")
puis apres j'aurais mis ceci
WinWaitActive("[CLASS:#32770]")
auriez vous une idée ?