Page 1 sur 1

[R] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 14:58
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.

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 17:02
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.

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 17:44
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.

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 18:21
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.

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 18:59
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.....

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 19:06
par Hugues
Bin là je peux pas t'aider plus... Désolé

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 20:38
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 ?

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 21:36
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

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 21:45
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 ^^

Re: [..] Automatiser FileOpenDialog

Posté : mar. 14 janv. 2014 22:23
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","")

Re: [..] Automatiser FileOpenDialog

Posté : mer. 15 janv. 2014 00:42
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). ;)

Re: [..] Automatiser FileOpenDialog

Posté : mer. 15 janv. 2014 11:09
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

Re: [R] Automatiser FileOpenDialog

Posté : mer. 15 janv. 2014 11:35
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

Re: [R] Automatiser FileOpenDialog

Posté : mer. 15 janv. 2014 13:24
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