Condition Elseif

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
thomas
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 26 févr. 2021 11:22
Status : Hors ligne

Condition Elseif

#1

Message par thomas »

Bonjour,

étant débutant j'essaie d’apprendre à utiliser Autoit .Cependant je bloque sur un point, la condition if plus particulièrement sur la condition elseif. le but de mon programme est de détecter des images. si une des images n'est pas visible il cherche la suivante et si aucune image n'est présente une variable s’incrémente. Je stock également la position des images. (le programme n'a aucun but applicatif pour le moment. Je m'en sert pour me former sur Autoit) . j'utilise la bibliothèque _ImageSearch. ci-dessous mon programme

Code : Tout sélectionner

#include <ImageSearch2015.au3>

$quitter = 0
$y = 0
$x = 0
$y1 = 0
$x1 = 0
$y2 = 0
$x2 = 0
$y3 = 0
$x3 = 0
$y4 = 0
$x4 = 0
HotKeySet("{ESC}", "_Exit")

Func _Exit()
Sleep(100)
Exit
EndFunc

While ( 1 )
   $quitter = $quitter + 1
   $search = _ImageSearch('check.png', 10, $x, $y, 0, 0)
   $search1 = _ImageSearch('check1.png', 1, $x1, $y1, 0, 0)
   $search2 = _ImageSearch('check2.png', 2, $x2, $y2, 0, 0)
   $search3 = _ImageSearch('check3.png', 3, $x3, $y3, 0, 0)
   $search4 = _ImageSearch('check4.png', 4, $x4, $y4, 0, 0)

   If $search = 10 Then
	  ToolTip("rouge")
	  ;sleep(2000)
   ElseIf $search1 = 1 Then
	  ToolTip("noir")
	  ;sleep(2000)
   ElseIf $search2 = 2 Then
	  ToolTip("vert")
	   ;sleep(2000)
   ElseIf $search3 = 3 Then
	  ToolTip("violet")
	  ;sleep(2000)
   ElseIf $search4 = 4 Then
	  ToolTip("bleu")
	  ;sleep(2000)

   Else
	   ToolTip($quitter)
	  ;sleep(2000)
   EndIf

WEnd
mon programme détecte bien la première image mais il ne détecte pas les suivantes. Il passe directement à la variable $quitter
je pense que je n'ai pas compris le principe de Elseif.

Cordialement Thomas
Modifié en dernier par thomas le lun. 08 mars 2021 15:35, modifié 1 fois.
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6136
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Condition Elseif

#2

Message par mikell »

thomas a écrit : ven. 26 févr. 2021 11:54(le programme n'a aucun but applicatif pour le moment. Je m'en sert pour me former sur Autoit)
OK
Bon sérieusement, c'est pour quel programme ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
thomas
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 26 févr. 2021 11:22
Status : Hors ligne

Re: Condition Elseif

#3

Message par thomas »

à terme il me servira à installer des applications qui ne peuvent pas être déployé en powershell (en gros tous les .exe). il me servira également à automatiser la configuration de base mail HCLnote (réplique local , création d'archives coté client en fonction des années etc... ). Mais avant ça j'ai besoin de savoir comment fonctionne Autoit vue qu'il sera déployé en entreprise.d'où ce programme test.

Cordialement Thomas
rgx
Niveau 4
Niveau 4
Messages : 55
Enregistré le : sam. 16 nov. 2019 17:53
Status : Hors ligne

Re: Condition Elseif

#4

Message par rgx »

Bonjour,

Dixit l'aide:

Code : Tout sélectionner

;===============================================================================
;
; Description:      Find the position of an image on the desktop
; Syntax:           _ImageSearch
; Parameter(s):     
;                   $findImage - the image to locate on the desktop
;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of 
;                                image differ from desktop. e.g GIF
;                   $resultPosition - Set where the returned x,y location of the image is.
;                                     1 for centre of image, 0 for top left of image
;                   $x $y - Return the x and y location of the image
;
; Return Value(s):  On Success - Returns 1
;                   On Failure - Returns 0 
;
; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
;       a desktop region to search
;
;===============================================================================
_ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance)
1. L'erreur: La valeur de retour d'_ImageSearch ne peut être que 0 ou 1 (donc pas 10, 1, 2, 3)
2. Le deuxième paramètre est la valeur de la tolérance (0-255) ( $tolerance - 0 for no tolerance ).
3. Il ne faut pas mettre la recherche dans la boucle principale, une seule itération suffit à balayer toute la zone
4. Ta syntaxe If/ElesIf est OK dans le principe, mais ici inutile car toutes les images doivent être testées, un Select...Case...EndSelect serait probablement meilleur, car à la première image trouvée, il y aurait sortie de la boucle sans tester le reste. (gain négligeable, mais c'est pour le principe)
5. Inutile d'initialiser les variables à zéro
6. L'automatisation d'installation peut parfois poser problème avec les écrans qui ne sont pas en mode résolution 100% (technique du DPI aware). On a ce problème notamment sur les écrans des portables qui sont souvent à 125% (17") ou 150% (15"). Il faut alors récupérer ce paramètre et avoir un lot d'images correspondant. Sans oublier les écran en mode nuit ou en contraste inversé.
7. C'est hyper délicat le pilotage en mode image, on ne le fait que quand une application n'a aucun raccourci clavier, ce qui n'est pratiquement jamais le cas avec les programmes standard (depuis XP il faut appuyer au moins une fois sur Alt gauche pour les faire apparaitre, mais je pense que tu connais déjà)

:wink:
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2011
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Condition Elseif

#5

Message par TommyDDR »

Déployer des applications à base de _ImageSearch ?
Si c'est vraiment votre motivation première, je pense que vous faites fausse route !
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
rgx
Niveau 4
Niveau 4
Messages : 55
Enregistré le : sam. 16 nov. 2019 17:53
Status : Hors ligne

Re: Condition Elseif

#6

Message par rgx »

Parfois c'est hélas le seul moyen pour des petits programmes fournis uniquement avec des Setup "maison" sans raccourcis et non pas les classiques type InnoSetup, NSIS, InstallShield etc.
Indispensable aussi sur les listes de choix quand le nombre d'items est variables.
Très utile aussi pour la connexion automatique sur les sites avec clavier numérique à ordre aléatoire s'ils ne proposent pas d'alternative. C'est même plus sécuritaire car une autre personne présente n'a pas le temps de voir les mouvements de souris ni d'entendre le clic (à condition que le clavier virtuel n'affiche pas de simulation d'appui)

:wink:
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2011
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Condition Elseif

#7

Message par TommyDDR »

@rgx : Tout ce que vous citez ont l'air faisable en ControlClic ou en utilisant les bons UDFs pour ce qui est de la connexion aux sites.
@thomas : Exposez vos problématiques avec les logiciels et sites ciblés, vous aurez des réponses plus robustes qu'un _ImageSearch ;) !
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
thomas
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 26 févr. 2021 11:22
Status : Hors ligne

Re: Condition Elseif

#8

Message par thomas »

Avants toute choses merci Pour l’intérêt que vous portez à ma problématique :) (je ne m'attendais pas à avoir des réponses si vite )

@rgx merci pour votre aide je me renseigne sur le select... Case... EndSelect.

Ma problématique est la suivante: j'ai besoin d'automatiser l'installation et la configuration de plusieurs applications.

liste des applications:

-Dell update (configuration)
-PDFcreator (installation)
-SAP (installation + configuration)
-HCLnote (COnfiguration)
-Delta (installation + Configuration)
-PackOffice (Configuration)

Le reste des applications est déployable et configurable via Powershell.

Liste des Problèmes:

-certaine application ne possède pas de raccourcis clavier.
-les fenêtres ne s’ouvre pas au même endroit sur l’écran.
-dans l'idéal le script doit être utilisable sur 2 catégories d'ordinateur: les ordinateurs portable (écran 15") et les ordinateurs de bureau (écran 21").
-le "Best" serait que les applications s’installent en arrière plan (j'en demande peut-être un peut trop ^^' )

si vous avez des idées je suis prêt à explorer vos pistes ;)
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2011
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Condition Elseif

#9

Message par TommyDDR »

Cela fait pas mal de temps que je voulais le faire, vous m'en avez donné la motivation ! :D

Allez jeter un coup d'oeil ici
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
thomas
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 26 févr. 2021 11:22
Status : Hors ligne

Re: Condition Elseif

#10

Message par thomas »

Merci ^^
le programme généré retourne une erreur:
"Setup Was cancelled or ran into an unexpected error
La méthode DragMove ne peut être appelée que lorsque le bouton principal de la souris est enfoncé"

code généré:

Code : Tout sélectionner

#include <AutoItConstants.au3>
#RequireAdmin

install()

Func install()
	Local $hwnd
	Local $selector

	$hwnd = winWaitVisible("PDFCreator")
	Sleep(250)
	$selector = 0
	winWaitVisible($hwnd, $selector)
	ControlClick($hwnd, "", $selector, "left", 1, 841, 125)
	ControlClick($hwnd, "", $selector, "left", 1, 583, 210)
	ControlClick($hwnd, "", $selector, "left", 1, 727, 525)
	ControlClick($hwnd, "", $selector, "left", 1, 652, 521)
	$hwnd = winWaitVisible("PDFCreator")
	Sleep(250)
	$selector = 0
	winWaitVisible($hwnd, $selector)
	ControlClick($hwnd, "", $selector, "left", 1, 138, 514)
	$hwnd = winWaitVisible("PdfCreator")
	Sleep(250)
	$selector = 0
	winWaitVisible($hwnd, $selector)
	ControlClick($hwnd, "", $selector, "left", 1, 843, 24)
EndFunc

Func winWaitVisible($hwnd, $ctrlId = Null)
	Local $hwndCheck
	While 1
		$hwndCheck = $ctrlId == Null ? $hwnd : ControlGetHandle($hwnd, '', $ctrlId)
		If(BitAND(WinGetState($hwnd), $WIN_STATE_VISIBLE) == $WIN_STATE_VISIBLE) Then ExitLoop
		Sleep(10)
	WEnd
	Return WinGetHandle($hwnd)
EndFunc
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2011
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Condition Elseif

#11

Message par TommyDDR »

Pouvez-vous agrémenter votre réponse d'un screen ? c'est étrange que le programme généré vous sorte cette erreur, ça doit être le programme que vous voulez installer qui l'affiche (reste à voir pourquoi).
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2011
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Condition Elseif

#12

Message par TommyDDR »

En effet, pdfcreator à l'air d'être peu permissif quand à la manipulation de ses fenêtres.

En cherchant PDFCreator silent install, on tombe sur ce message, j'ai testé chez moi, ça fonctionne :

Code : Tout sélectionner

"PDFCreator-4_2_0-Setup.exe" /ForceInstall /VERYSILENT /NORESTART /components="program" /tasks="winexplorer,!desktopicon"
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
thomas
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 26 févr. 2021 11:22
Status : Hors ligne

Re: Condition Elseif

#13

Message par thomas »

malheureusement PDFcreator bloque l'installation silencieuse lorsque le PC est dans un domaine ^^'
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2011
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Condition Elseif

#14

Message par TommyDDR »

En effet : https://landingpage.pdfforge.org/domain/en
Pouvez vous me dire quelles options vous choisissez dans l'installation de pdfcreator ? (langue, dossier, etc)
Avez-vous utilisé mon programme pour l'installation des autres logiciels ? (et est ce que ça fonctionne pour les autres ?)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11679
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Condition Elseif

#15

Message par Tlem »

Bonjour.
J'ai trouvé quelques informations "utiles".
https://forums.pdfforge.org/t/pdfcreator-silent-install-not-working-since-4-0-0/16847/3 a écrit :Robin.W Mar '20
Hi,

sorry for the trouble.
We have changed to a new installer technology for PDFCreator 4.0 and above, but the legacy setups are still available while we work on adding back command line switches for the new setup.
You can find the 4.0.3 legacy setup here: http://download.pdfforge.org/download/p ... acy-stable 87
If you are using PDFCreator Free and your computer is part of a domain, the silent install has been disabled after version 3.2.2. In some unfortunate cases, the computer might get incorrectly detected as being part of a domain, which we are still investigating.
If you are using a business edition and would like to deploy silently, we recommend using the MSI packages instead.
Et ce sujet si vous utilisez la version Businness Edition : https://forums.pdfforge.org/t/pdfcreato ... tall/16790
Dans lequel il est expliqué comment extraire le fichier msi pour une installation silencieuse.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
thomas
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 26 févr. 2021 11:22
Status : Hors ligne

Re: Condition Elseif

#16

Message par thomas »

@TommyDDR j'installe seulement PDFCreator donc je décoche PDFarchitect (situer dans l'engrenage) puis je fait passer et enfin installer.
j'ai également essayer avec AdobeReader (juste pour le test car il existe un .msi) Mais la in ne détecte pas la fenêtre ^^' https://get.adobe.com/fr/reader/

@Tlem en effet il va peut-être falloir mettre la main au portefeuille pour PDFcreator (même si ça me gêne un peu car dans certain service de l'entreprise il n'est pas beaucoup utilisé) .
Répondre