Page 1 sur 1

[R] Parent: Déterminer comment est appellé le prog

Posté : lun. 08 juil. 2013 14:37
par fred39
Bonjour,
Comment Déterminer la méthode d'appel d'un programme?
Je voudrais faire en sorte que si mon programme est appelé par double clic, ou un clic + "enter"; les logs de celui-ci s'affichent dans une msgbox.
Mais si il est appelé par un batch ou autre programme (script de login par exemple=), Consolewrite() alimenterait mon fichier de log.
exemple:
mon_programme.exe >>mon_log.txt.

Je ne sais pas comment déterminer celà. :?
$cmdline[0], ou $cmdlineraw ne renvoient rien dans les 2 cas.

Si quelqu'un a une solution.... :-)
ou une piste...:-)
Merci
Fred

Re: [..] Parent: Déterminer comment est appellé le prog

Posté : lun. 08 juil. 2013 14:48
par TopXm
Hello :)

Justement, tu pourrais passer un paramètre à ton programme lors d'un appel en batch, par exemple :

Code : Tout sélectionner

MonProg.exe /Batch
A ce moment là tu aurais

Code : Tout sélectionner

$CmdLine[0] = 1
$CmdLine[1] = '/Batch'
Et tu traites dans ton code selon le paramètre passé ;)

Re: [..] Parent: Déterminer comment est appellé le prog

Posté : lun. 08 juil. 2013 15:11
par fred39
Merci TopXm pour ta réponse. :)
J'avais bien pensé à ça,
Le hic, c'est que je ne suis pas forcément maitre du script appelant.

En fait, il faudrait plutôt que je puisse faire:

if mon_programme.exe est appelé par un double clic then
msgbox (.....)
Else
Consolewrite(....)
endif

:?

Re: [..] Parent: Déterminer comment est appellé le prog

Posté : lun. 08 juil. 2013 20:21
par alex1205
J'ai fait un code a l'arrache :

Code : Tout sélectionner

#include <Array.au3>
If IsArray($CMDLine) And $CMDLine[0] > 1 Then
    ;CMD
    _ArrayDisplay($CMDLine)
Else
    ;Double Clic
    MsgBox(0, "AUTOIT3", "ouvert avec double clic")
EndIf

;par exemple, dans cmd, faire monprog.exe /silencieux /install
;ca va afficher (dans _ArrayDisplay)
;[0] 1
;[1] /silencieux
;[2] /install
 

Re: [..] Parent: Déterminer comment est appellé le prog

Posté : lun. 08 juil. 2013 23:48
par fred39
Merci Alex 1205. :)
Le hic, c'est que les chevrons >> qui permettraient de loguer les retours de consolewrite dans un fichier de log laissent $cmdline[0] à 0.

Exemple: si j'appelle mon programme de la manière suivante:
mon_programme.exe >>mon_log.txt
dans ce cas $cmdline[0] reste à 0

Est-il possible de déterminer si le programme est exécuté suite à un double clic?

Re: [..] Parent: Déterminer comment est appellé le prog

Posté : mar. 09 juil. 2013 01:36
par jchd
Est-il possible de déterminer si le programme est exécuté suite à un double clic?
Pas facile ça, il faudrait être dalife à la place du calife.

Par contre, si le process parent est cmd.exe, alors l'appli a été lancée par un batch.

Re: [..] Parent: Déterminer comment est appellé le prog

Posté : mar. 09 juil. 2013 10:36
par jguinch
Salut
Comme l'a dit jchd, c'est pas simple.
Ce qui est possible de faire facilement, c'est effectivement détecter le process parent, ce qui pourra t'aider à savoir si le prog a été lancé dans l'explorer, un script ou autre :
► Afficher le texte
Maintenant, pour savoir si le lancement a été effectué par double clic ou entrée, il faudrait un autre script qui surveille en permanence, mais là tu vas me dire que c'est pas possible...

Juste pour mieux comprendre, quel est le l'intérêt de faire cette différence ?

Re: [R] Parent: Déterminer comment est appellé le prog

Posté : mar. 09 juil. 2013 11:04
par fred39
Bonjour,
merci à Jchd, et Jguinch.
C'est juste ce qu'il me faut. :D
le parent process.
Pour répondre à ta question Jguinch,
l'intérêt de cette différence est:
On fait pas mal d'outils en autoit, pour installer des logiciels, ou diverses autres actions.
Ces outils loguent les erreurs ou autres infos.
Si un outil est lancé par une action de l'utilisateur: (parent explorer) j'utiliserai une message box.
Si l'outils est appelé lors d'un script de login, je log différemment, avec consolewrite par exemple.

Bonne journée.
:D

Re: [R] Parent: Déterminer comment est appellé le prog

Posté : mar. 09 juil. 2013 13:43
par jguinch
content d'avoir pu t'aider voisin ! :D