Page 1 sur 1

[R] Action du WinSetTitle... réversible!

Posté : jeu. 19 mars 2015 16:45
par MissT
Bonjour à tous,

J'essaie de simplifier l'utilisation de FwTools pour mes collègues. Cet outil utilise la fenêtre dos dans laquelle il faut saisir des lignes de codes (c'est archaïque mais c'est méga-puissant!).
Vu que DOS les rebute, je veux créér une petite appli autoIt qui leur demande qq paramètres pour envoyer des lignes de commande dans DOS.

Code : Tout sélectionner

    $FToolOpened = WinExists('FWTools') 
    If $FToolOpened = 0 then                                   ;si FwTools n'est pas ouvert, on le lance
        run ("C:\Windows\system32\cmd.exe /K ""C:\Program Files (x86)\FWTools2.4.7\setfw.bat"" ")
        winwait('cmd.exe')
        sleep (10)
        WinSetTitle('cmd.exe',"",'FWTools Shell')
    endif
    winactivate("FWTools Shell")
    msgbox (0, 'test',wingettitle("FWTools",""))
    ;Focus sur FwTools
    If WinExists('FWTools Shell')=1 then
        ;on se place sur le bon dossier
        send('cd \{ENTER}')
        ...
    Endif
A l'issue du WinSetTitle: ma fenêtre DOS est bien renommée "FWTools Shell".
le msgbox me renvoie bien le titre "FWTools Shell".
la fenêtre DOS reçoit bien l'instruction 'cd \{ENTER}' mais la fenêtre a repris son ancien nom "C:\Windows\system32\cmd.exe" !!

Pourquoi le titre ne reste-t-il pas définitivement "FWTools Shell"?

Re: [..] Action du WinSetTitle... réversible!

Posté : jeu. 19 mars 2015 19:37
par jguinch
Essai de modifier le script setfw.bat, en ajoutant le titre en début de script :

Code : Tout sélectionner

title FWTools Shell

Re: [..] Action du WinSetTitle... réversible!

Posté : jeu. 19 mars 2015 20:07
par MissT
jguinch a écrit :Essai de modifier le script setfw.bat, en ajoutant le titre en début de script :

Code : Tout sélectionner

title FWTools Shell
Heu, j'avoue que je ne comprend pas où placer "title FWTools Shell"... Dans le script du run? avant le run? Autre???
run ("title FWTools Shell C:\Windows\system32\cmd.exe /K ""C:\Program Files (x86)\FWTools2.4.7\setfw.bat"" ") ?
title "FWTools Shell" run ("C:\Windows\system32\cmd.exe /K ""C:\Program Files (x86)\FWTools2.4.7\setfw.bat"" ") ?

Re: [..] Action du WinSetTitle... réversible!

Posté : jeu. 19 mars 2015 20:15
par jguinch
Je me suis peut-être mal exprimé.
Ce que je te propose c'est de modifier le script C:\Program Files (x86)\FWTools2.4.7\setfw.bat
Tu l'édites avec notepad ou autre éditeur, et tu ajoutes title FWTools Shell vers le début.

Re: [..] Action du WinSetTitle... réversible!

Posté : jeu. 19 mars 2015 20:28
par MissT
Impossible de modifier ce fichier ni celui qu'il appelle. Pourtant, j'ai vérifié dans le gestionnaire des tâches, il n'est pas en cours d'utilisation...

Ce que je ne comprend pas c'est que ce script "C:\Windows\system32\cmd.exe /K ""C:\Program Files (x86)\FWTools2.4.7\setfw.bat""" est issu d'un copier/coller de la cible de l’icône de FwTool (cf. sur mon bureau).
En quoi un lancement via run est-il différent qu'un double-clic sur l'icone du bureau?

Re: [..] Action du WinSetTitle... réversible!

Posté : jeu. 19 mars 2015 21:08
par jguinch
Dans ce cas, il faut travailler avec le handle de la fenêtre et non avec le titre.
Pour récupérer le handle, tu peux te servir de ton WinWait, ou n'importe quelle fonction qui retourne un handle de fenêtre (WinGetHandle...)

Code : Tout sélectionner

run ("C:\Windows\system32\cmd.exe /K ""C:\Program Files (x86)\FWTools2.4.7\setfw.bat"" ")
$hFWTools =  winwait('cmd.exe')
ControlSend($hFWTools , "", "", "cd \{ENTER}")
De plus, je te conseille d'utiliser ControlSend (comme je l'ai fait) plutôt que Send, qui sera bancal.

Re: [..] Action du WinSetTitle... réversible!

Posté : ven. 20 mars 2015 13:36
par MissT
Ok, trouvé.
C'est dans dos qu'il faut envoyer une commande title:

Code : Tout sélectionner

ControlSend($NomFenetre,'','','title FWTools Shell {ENTER}')
Ceci permet de renommer la fenêtre DOS "FWTools Shell" une bonne fois pour toute.

Je n'explique toujours pas la "reversibilité" du WinSetTitle mais c'est résolu pour mon cas...
Merci pour votre aide!