[R] Automatiser FileOpenDialog

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

[R] Automatiser FileOpenDialog

#1

Message par walkson »

Bonjour,
Je cherche à automatiser FileOpenDialog
J'ai essayé plusieurs méthodes sans succès, impossible de contrôler la fenêtre...

Code : Tout sélectionner

FileOpenDialog("Ouvrir", @DesktopDir & "\", "text (*.txt)")
    ControlSend("Ouvrir", "", "Edit1", @DesktopDir & "\monchemin.txt")
         ControlClick("Ouvrir", "", "Button1", "left")
FileOpenDialog semble arrêter le script dans l'attente d'une réponse (comme MsgBox). Y a t' il une solution ?
Merci de vous pencher sur mon problème.
Modifié en dernier par walkson le mer. 15 janv. 2014 10:16, modifié 1 fois.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#2

Message par Tlem »

Pourquoi utilisez-vous un FileOpenDialog() si vous connaissez déjà le chemin à utiliser ?
FileOpenDialog() est une fonction bloquante. Comme il n'y a pas de timeout, vous ne pourrez lancer aucune action tant que celle-ci ne sera pas terminée.
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é".
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#3

Message par walkson »

Bonjour Tlem,
C'est le programme que je veux automatiser qui ouvre un FileOpenDialog()
A vous lire et comme je le craignais, il n' y a pas de solution à part de répondre à cette fenêtre.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#4

Message par Hugues »

Salut,

Je ne sais pas si cela peu fonctionner, mais tu as pensé à AU3Info? Et tu utilises Finder Tool pour avoir infos sur ta fenêtre FileOpen.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#5

Message par walkson »

Bonsoir Hugues,
Oui, j'ai utilisé AU3Info mais sans aucunes interactions.
Comme l'a dit Tlem, la fenêtre se met en attente d'une réponse et donc le script est en pause.
Le seul moyen de communiquer serait d'envoyer un message avant l’apparition de la fenêtre et qu'elle en tienne compte. Mais là, je crois que je suis en plein délire.....
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#6

Message par Hugues »

Bin là je peux pas t'aider plus... Désolé
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#7

Message par Tlem »

walkson a écrit :C'est le programme que je veux automatiser qui ouvre un FileOpenDialog()
walkson a écrit :la fenêtre se met en attente d'une réponse et donc le script est en pause
Heuu il y a un truc là !!!
Le programme/script que vous essayez d'automatiser est-il séparé du script qui doit faire l'automatisation ?
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é".
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#8

Message par walkson »

Bonsoir,
Le programme que je désire automatiser est TrueCrypt Format.exe
J'ai réussi à automatiser (avec Autoit) toutes les étapes mais je coince sur le FileOpenDialog concernant les Keyfiles que je suis obligé de désigner manuellement à travers ce FileOpenDialog
Le FileOpenDialog de TrueCrypt est identique à celui d'Autoit. Ce n'est pas la fenêtre que l'on peut trouver sur "ouvrir" de Notepad
Voici ce que me donne V3 Window info
► Afficher le texte
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#9

Message par mikell »

Tlem a écrit :Heuu il y a un truc là !!!
+1 !
Le FileOpenDialog d'un programme externe n'est bloquant que pour le programme concerné
Les controles qu'il contient peuvent donc être gérés par un script ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#10

Message par walkson »

Bonsoir Mikell,
J'en suis content, mais comment faire ?
J'ai bien tenté d'envoyer le chemin dans le combobox et que néni puis dans l'édit, pareil.
Voilà ce que j'ai fait:

Code : Tout sélectionner

;$hWnd_TC_Volume_Creation_Wizard >> handle de la fenêtre principale    
ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:7]') ;valide keyfile
        If ControlEnable($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:8]') Then
            ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:8]');fenêtre TrueCrypt - Keyfiles
        EndIf
    ControlClick("TrueCrypt - Keyfiles", '', '[CLASS:Button; INSTANCE:1]');ouvre filedialog
    ControlSetText("Select Keyfile", '', '[CLASS:Edit; INSTANCE:1]', "C:\Users\Pc\Documents\AUTOIT\PROJET\TC\TC\Test.tc", 1)
    ;aucun effet sur FileOpenDialog, idem si j'utilise Class:combobox
  While 1;attente listview soit rempli
    Local $aa1 = ControlListView("TrueCrypt - Keyfiles","",'SysListView321',"GetText", 0)
    If $aa1 > "" Then ExitLoop
    WEnd
    ControlClick("TrueCrypt - Keyfiles", '', '[CLASS:Button; INSTANCE:8]');valide
    WinWaitClose("TrueCrypt - Keyfiles","")
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#11

Message par Tlem »

Bonsoir.
Utilisez ceci :

Code : Tout sélectionner

ControlSetText("[CLASS:#32770]", 'Type', '[CLASS:Edit; INSTANCE:1]', "C:\Users\Pc\Documents\AUTOIT\PROJET\TC\TC\Test.tc", 1)
Si ça ne le fait pas, remplacez 'Type' par un autre mot qui se trouve en bas.
Dans ma version, j'ai "Nom du fichier :" ou "Type :", si vous avez une version étrangère, adaptez au besoin (il me semble que 'Type' est commun sur les OS Fr et Us). ;)
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é".
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Automatiser FileOpenDialog

#12

Message par walkson »

Bonjour,
Tout d'abord, merci à Tlem pour son aide.
J'ai utilisé son scrypt, l'ai modifié et reremodifié sans résultat pour enfin m'apercevoir que mon problème était un problème de tempo. En effet, la commande était lancée avant l'ouverture de la fenêtre et forcément, plouf!
Voilà le bout de code qui fonctionne parfaitement

Code : Tout sélectionner

    ControlClick("TrueCrypt - Keyfiles", '', '[CLASS:Button; INSTANCE:1]');ouvre filedialog
    WinWait("[Title:    Select Keyfile]","",1);attente ouverture Fileopendialog
    ;entrer chemin keyfile
    ControlSetText("[CLASS:#32770]", '&Nom du fichier :', '[CLASS:Edit; INSTANCE:1]', "C:\Users\Pc\Documents\AUTOIT\PROJET\TC\TC\Test.tc", 1)
    ;button "OK"
    ControlClick("[CLASS:#32770]", '', '[CLASS:Button; INSTANCE:1]')
Voilà le code en entier pour TrueCrypt Format qui fonctionne mais qui mérite d'être encore travaillé (brut de brut)
► Afficher le texte
Rmq: ce code est fortement inspiré d'un code du forum anglais en plus simple et plus complet
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Automatiser FileOpenDialog

#13

Message par jguinch »

Juste par curiosité, n'est-il pas possible d'utiliser TrueCrypt en ligne de commande ?
http://www.truecrypt.org/docs/command-line-usage
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [R] Automatiser FileOpenDialog

#14

Message par walkson »

Bonjour jguinch
Pour gérer les containers, si c'est possible. Mais pour les créer, non.
C'est en projet à TrueCrypt mais depuis plusieurs années...
Un exemple pour monter un volume:

Code : Tout sélectionner

Local $exect = $chemin & "\TrueCrypt\TrueCrypt.exe"
ShellExecuteWait($exect, 'TrueCrypt /lv /v ' & $vol & ' /a /p ' & $MP & ' /m rm /e /q background')
Local $PID = ProcessExists("TrueCrypt.exe") ; Will return the PID or 0 if the process isn't found.

;/v path volume TC
;/l lettre disque
;/k keyfile
;/a automount
;/p mot de passe
;/m montage (rm removable)
;/e ouvre explorer
;/q Automatically perform requested actions and exit
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre