Page 1 sur 1
[R] Créer l'aide d'un soft en ligne de commande
Posté : lun. 12 juil. 2010 18:01
par arrkhan
Bonjour à tous,
depuis maintenant quelques temps, quand je crée un soft, je me manque jamais la possibilité de pouvoir l'utiliser en ligne de commande, malgré tout, je ne trouve pas ma solution très propre...
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
If Not @Compiled Then MsgBox(262208, "DEBUG", "Merci de me compiler avant usage")
$COM = $CMDLINE
If $COM[0] > 0 Then
For $i = 1 To $COM[0]
Switch $COM[$i]
Case "/?"
MsgBox(0x40000, @ScriptName & " - Aide", _
"paramètres utiles:" & @CRLF _
& @CRLF & "/?" _
& @CRLF & @TAB & "Afficher cette aide" _
& @CRLF & "/1" _
& @CRLF & @TAB & "Aide de /1" _
& @CRLF & "/2" _
& @CRLF & @TAB & "Aide de /2")
Exit
Case "/1"
MsgBox(0, '', '/1')
Case "/2"
MsgBox(0, '', '/2')
Case Else
MsgBox(262208, "Paramètre incorrect", _
"Vous avez tapé : " & @CRLF & _
@ScriptFullPath & " " & $CMDLINERAW & @TAB & @CRLF & @CRLF & _
"Veuillez taper :" & @CRLF & @ScriptFullPath & " /?" & @TAB & @CRLF & _
"pour la liste des paramètres utilisables.")
Exit
EndSwitch
Next
EndIf
en effet, j'utilise une "msgbox" pour afficher l'aide, je souhaiterai maintenant intégrer l'aide directement dans la console source, mais, c'est là que je cale, une idée ?
ps: je me passerai volontiers des commandes Send (encore moins propre que mes msgbox ^^)
Re: [..] Créer l'aide d'un soft en ligne de commande
Posté : lun. 12 juil. 2010 20:13
par Iste
chuis pas bien sur d'avoir compris ce que tu recherchais, peut etre ce topic pourra t'aider ?
http://www.autoitscript.com/forum/index ... 17380&st=0
Re: [..] Créer l'aide d'un soft en ligne de commande
Posté : lun. 12 juil. 2010 21:42
par arrkhan
eh beh, quand tu utilises un exe en ligne de commande genre "dir" qui permet de lister les fichiers, tu peux lui ajouter un argument /? lequel s'affiche dans la même fenêtre
Code : Tout sélectionner
Affiche une liste de fichiers et de sous-répertoires dans un répertoire.
DIR [lecteur:][chemin][nom_de_fichier] [/A[[:]attributs]] [/B] [/C] [/D] [/L]
[/N] [/O[[:]tri]] [/P] [/Q] [/S] [/T[[:]heure]] [/W] [/X] [/4]
[lecteur:][chemin][nom_de_fichier]
Spécifie le lecteur, le répertoire et/ou fichiers à lister.
/A Affiche les fichiers dotés des attributs spécifiés.
attributs D Répertoires R Lecture seule
...
j'aimerai pouvoir affiché l'aide de mes outils en cmd de la même manière plutôt qu'en affichant une msgbox
Re: [..] Créer l'aide d'un soft en ligne de commande
Posté : lun. 12 juil. 2010 21:58
par Iste
ha ben, ConsoleWrite() alors, il faut juste penser a cocher "create CUI instead of GUI EXE." l'hors de la compilation
ca tourne bien chez moi
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=..\..\..\Desktop\test.exe
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Constants.au3>
If Not @Compiled Then MsgBox(262208, "DEBUG", "Merci de me compiler avant usage")
$COM = $CMDLINE
If $COM[0] > 0 Then
For $i = 1 To $COM[0]
Switch $COM[$i]
Case "/?"
ConsoleWrite("paramètres utiles:" & @CRLF _
& @CRLF & "/?" _
& @CRLF & @TAB & "Afficher cette aide" _
& @CRLF & "/1" _
& @CRLF & @TAB & "Aide de /1" _
& @CRLF & "/2" _
& @CRLF & @TAB & "Aide de /2")
Exit
Case "/1"
ConsoleWrite('/1')
Case "/2"
ConsoleWrite('/2')
Case Else
ConsoleWrite("Vous avez tapé : " & @CRLF & _
@ScriptFullPath & " " & $CMDLINERAW & @TAB & @CRLF & @CRLF & _
"Veuillez taper :" & @CRLF & @ScriptFullPath & " /?" & @TAB & @CRLF & _
"pour la liste des paramètres utilisables.")
Exit
EndSwitch
Next
EndIf

Re: [..] Créer l'aide d'un soft en ligne de commande
Posté : lun. 12 juil. 2010 21:59
par arrkhan
raaah mais lol, je me doutais que c'était consolewrite mais je savais pas pour le "create CUI instead of GUI EXE."
Merci à toi ^^
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 03:12
par arrkhan
Double post pour up malgré le résolu, par contre maintenant que je lance ma gui, il m'affiche tout de même un fenêtre de console, un moyen de l'enlever proprement ?
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Opt("guioneventmode", 1)
If Not @Compiled Then MsgBox(262208, "DEBUG", "Merci de me compiler avant usage")
$COM = $CMDLINE
If $COM[0] > 0 Then
For $i = 1 To $COM[0]
Switch $COM[$i]
Case "/?"
ConsoleWrite("OSEF 1")
Exit
Case Else
ConsoleWrite("OSEF 2")
Exit
EndSwitch
Next
Else
GUICreate("ARF")
GUISetOnEvent(-3, "_Exit")
GUISetState()
EndIf
While 1
Sleep(1000)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
en version sale, j'ai bien essayer avec un WinSetState(@ScriptFullPath, "", @SW_HIDE) après le else, mais une console apparait 1/4 seconde, ca fait vraiment programme vérolé...
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 08:29
par Tlem
Il me semble me rappeler qu'il y a quelques temps un sujet similaire a été traité (moins de 3 ou 6 mois).
Si mes souvenirs sont bon, le script était bien compilé en GUI, et des informations était renvoyées dans la console.
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 13:11
par timmalos
@Arrkhan, je ne crois pas qu'il existe un moyen de l'enlever, c'est le principe du 'CUI instead of GUI', par contre le sujet dont je pense que pense Tlem (

) ne traitait que de l'ecriture en console à partir d'un programme appelé avec Run() ici ce n'est pas le même cas.
Ah mon humble avis (qui soit dit en passant ne vaut pas grand chose) ca doit pas être possible, tu as deja vu des programmes ecrivants en console ET qui avaient une GUI ? Meme si non ecrits en autoit bien sur, j'ai rien qui me vient à l'esprit.
Sinon il faudrait retourner une valeur quand le programme se ferme. Peut etre que
http://code.google.com/p/m-a-t/download ... onsole.au3 pourrait t'aider. (_Console_WriteConsole) (non testé)
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 16:07
par arrkhan
timmalos a écrit :Ah mon humble avis (qui soit dit en passant ne vaut pas grand chose) ca doit pas être possible
Ton humble avis m'a amené à la même conclusion, pas possible :
Il n'y a pas de solution miracle. Une appli marquée GUI n'aura pas de console par défaut (et si elle est lancée en ligne de commande, l'utilisation de la console n'écrira rien dans la console qui aura lancée cette appli), et une appli marquée par CUI aura toujours une console par défaut qui traîne si on la lance par l'explorateur.
timmalos a écrit :tu as deja vu des programmes ecrivants en console ET qui avaient une GUI ? Meme si non ecrits en autoit bien sur, j'ai rien qui me vient à l'esprit.
Un bon exemple d'une telle application est ILDASM.EXE du .NET Framework, c'est une application marquée comme Console, mais qui montre aussi des fenêtres, et qui masque sa console dès qu'elle est lancée par l'explorateur.
source des réponses :
http://groupes.codes-sources.com/articl ... 35652.aspx
Mouais ILDASM.exe doit utiliser une méthode bien crade genre WinSetState(@ScriptFullPath, "", @SW_HIDE), c'est ce que je vais faire je pense, en ométant pas de le signaler.
merci pour toutes vos réponses
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 18:17
par Tlem
Le sujet dont je parlais est celui-ci :
http://www.autoitscript.fr/forum/viewto ... 841#p32841
Evidemment, ca ne fonctionne que pour Scite, mais cela m'a fait pensé à une 1/2 solution.
Je préviens de suite qu'elle est 'tirée par les cheveux', mais c'est une solution comme une autre.
1 - Un script GUI
2 - Un script CUI (ajouté à 1 avec le FileInstall)
Le script GUI lance le script CUI avec en paramètre les informations à afficher dans la console.

Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 19:03
par arrkhan
j'y avais pensé aussi mais bon ca double le poids de l'exe, c'est pas glop, malgré tout, je crois que ca va se finir comme ça.
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 21:11
par Tlem
***** BINGO *****
Code : Tout sélectionner
#include <WinAPI.au3>
_WinAPI_AttachConsole(-1)
Global $Message = 'Ceci est le message a afficher dans la console.'
MsgBox(0, '', 'Ma boite de message')
Run(@ComSpec & " /c " & 'Echo ' & $Message)
Fonctionne parfaitement compilé ou non ...
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 21:27
par arrkhan
bravo et merci, plus qu'a adapté tout ça ^^
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mar. 13 juil. 2010 22:11
par Tlem
C'est sans doute approximatif, mais pas très loin de ce que tu veut faire ...
► Afficher le texte
Code : Tout sélectionner
#include <WinAPI.au3>
_WinAPI_AttachConsole(-1)
; Gestion de la ligne de commande.
If $CmdLine[0] > 0 Then
; Aide
If StringInStr($cmdlineraw, "-?") Then
_ConsoleWrite("Liste des options :")
_ConsoleWrite(@ScriptName & " [-opt1] [-opt2] [-opt3] [-?]")
_ConsoleWrite("-opt1 Option 1")
_ConsoleWrite("-opt2 Option 2")
_ConsoleWrite("-opt3 Option 3")
_ConsoleWrite("-? Cette aide")
Exit (0)
EndIf
;opt1
If StringInStr($cmdlineraw, "-opt1") Then
_ConsoleWrite("Vous avez choisi l'option 1")
Exit (0)
EndIf
;opt2
If StringInStr($cmdlineraw, "-opt2") Then
_ConsoleWrite("Vous avez choisi l'option 2")
Exit (0)
EndIf
;opt3
If StringInStr($cmdlineraw, "-opt3") Then
_ConsoleWrite("Vous avez choisi l'option 3")
Exit (0)
EndIf
Exit (1)
Else
MsgBox(64, "Aide", "Liste des options :" & @CRLF & @CRLF & _
@ScriptName & " [-opt1] [-opt2] [-opt3] [-?]" & @CRLF & @CRLF & _
"-opt1" & @TAB & "Option 1" & @CRLF & _
"-opt2" & @TAB & "Option 2" & @CRLF & _
"-opt3" & @TAB & "Option 3" & @CRLF & _
"-?" & @TAB & "Cette aide")
EndIf
Func _ConsoleWrite($sStr)
Run(@ComSpec & " /c " & 'Echo ' & _AnsiToOEM($sStr))
Sleep(25)
EndFunc ;==>_ConsoleWrite
Func _AnsiToOEM($sAnsi)
Local $a_OEMFName = DllCall('user32.dll', 'Int', 'CharToOem', 'str', $sAnsi, 'str', '')
If @error = 0 Then Return $a_OEMFName[2]
EndFunc ;==>_AnsiToOEM
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mer. 14 juil. 2010 00:14
par arrkhan
joli, mais là où le bas blesse, c'est en respectant la syntaxe d'aide, beh, ça marche plus évidemment :
_ConsoleWrite(@ScriptName & " [-opt1 | -opt2 | -opt3]")
Mais au moins ca nous aura fait bosser un peu ^^
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mer. 14 juil. 2010 13:00
par Tlem
En batch, pour afficher des caractère spéciaux, il suffit de les échapper ...
Cela nous donne :
Code : Tout sélectionner
_ConsoleWrite(@ScriptName & " ^[-opt11 ^| -opt12 ^| -opt13^]")
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mer. 14 juil. 2010 16:37
par arrkhan
décidément, il a réponse à tout ce Tlem, je ne me rappelais plus qu'on pouvait échapper des caractères en batch et j'avais oublié ton historique chez Astase ^^
Re: [R] Créer l'aide d'un soft en ligne de commande
Posté : mer. 14 juil. 2010 19:12
par Tlem