Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment récupérer une valeur passée avec la Shell nom_appli.exe "valeur" ?

9 réponses
Avatar
Bull
Bonjour à tous,

J'aimerais pouvoir passer une chaine de caractère de l'extérieur vers mon
application. Pour cela, j'ai entendu que l'on pouvait utiliser la commande
shell suivante : nom_appli.exe "la valeur à passer"

Ma question est la suivante : comment dois-je faire pour récupérer cette
valeur au niveau de mon appli ?

Merci d'avance,

--
Cordialement,
Bull

9 réponses

Avatar
Fred
Dans : news:%,
Bull disait :
Bonjour à tous,



Bonjour,

J'aimerais pouvoir passer une chaine de caractère de l'extérieur vers
mon application. Pour cela, j'ai entendu que l'on pouvait utiliser la
commande shell suivante : nom_appli.exe "la valeur à passer"




Regarde ceci :
Classe System.Environment dans le framework.
Propriété CommandLine

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Bull
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner et que
je la lance après un paramètre en ligne de commande. Comment faire pour
transférer le paramètre à l'instance qui tourne déjà ?

Merci d'avance,
--
Cordialement,
Bull


"Fred" a écrit dans le message de news:
%
Dans : news:%,
Bull disait :
Bonjour à tous,



Bonjour,

J'aimerais pouvoir passer une chaine de caractère de l'extérieur vers
mon application. Pour cela, j'ai entendu que l'on pouvait utiliser la
commande shell suivante : nom_appli.exe "la valeur à passer"




Regarde ceci :
Classe System.Environment dans le framework.
Propriété CommandLine

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Fred
Dans : news:,
Bull disait :
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner
et que je la lance après un paramètre en ligne de commande. Comment
faire pour transférer le paramètre à l'instance qui tourne déjà ?



Je ne vais pas pouvoir t'être utile là dessus car je n'ai jamais entendu
parler d'une telle possibilité ! Cela me fait plutôt penser à la notion
de service.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Bull
Je pense qu'il y a un autre moyen que de passer par un service. En effet, on
a par exemple le cas où en cliquant sur un lien dans son navigateur, une
information est envoyée à l'application qui tourne.

Quelqu'un saurait-il comment faire ?

--
Cordialement,
Bull


"Fred" a écrit dans le message de news:
%
Dans : news:,
Bull disait :
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner
et que je la lance après un paramètre en ligne de commande. Comment
faire pour transférer le paramètre à l'instance qui tourne déjà ?



Je ne vais pas pouvoir t'être utile là dessus car je n'ai jamais entendu
parler d'une telle possibilité ! Cela me fait plutôt penser à la notion de
service.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Julien Bakmezdjian [MS]
Bonjour,

Votre application est une application Windows j'imagine ? Depuis quel
endroit souhaitez-vous lui envoyer des informations ?
Plusieurs techniques existent comme l'envoi de messages, la simulation de
frappe de touches, création d'un fichier dans un dossier spécial, clés de
registre, ou encore les fichiers partagés (aucun rapportr avec les fichiers
classiques !), partage d'instances COM (automation)...

Cordialement,

Julien Bakmezdjian

"Bull" a écrit dans le message de news:

Je pense qu'il y a un autre moyen que de passer par un service. En effet,
on a par exemple le cas où en cliquant sur un lien dans son navigateur,
une information est envoyée à l'application qui tourne.

Quelqu'un saurait-il comment faire ?

--
Cordialement,
Bull


"Fred" a écrit dans le message de news:
%
Dans : news:,
Bull disait :
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner
et que je la lance après un paramètre en ligne de commande. Comment
faire pour transférer le paramètre à l'instance qui tourne déjà ?



Je ne vais pas pouvoir t'être utile là dessus car je n'ai jamais entendu
parler d'une telle possibilité ! Cela me fait plutôt penser à la notion
de service.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT






Avatar
Bull
Bonjour,

Mon application est effectivement une application Windows. Pour être précis,
je souhaite envoyer les informations (en fait juste une url) via le
protocole feed
(http://www.25hoursaday.com/draft-obasanjo-feed-URI-scheme-02.html). J'ai
fait déjà tout le nécessaire dans le registre afin que lorsque le protocole
est utilisé, une commande shell est lancée afin d'exécuter mon application
en passant en ligne de commande l'url en question.

Maintenant, mon problème est lorsque l'application tourne déjà.

Pouvez-vous m'aiguiller vers la solution technique qui vous parait la plus
simple à réaliser ?

Merci d'avance,

--
Cordialement,
Bull


"Julien Bakmezdjian [MS]" a écrit dans le
message de news: %
Bonjour,

Votre application est une application Windows j'imagine ? Depuis quel
endroit souhaitez-vous lui envoyer des informations ?
Plusieurs techniques existent comme l'envoi de messages, la simulation de
frappe de touches, création d'un fichier dans un dossier spécial, clés de
registre, ou encore les fichiers partagés (aucun rapportr avec les
fichiers classiques !), partage d'instances COM (automation)...

Cordialement,

Julien Bakmezdjian

"Bull" a écrit dans le message de news:

Je pense qu'il y a un autre moyen que de passer par un service. En effet,
on a par exemple le cas où en cliquant sur un lien dans son navigateur,
une information est envoyée à l'application qui tourne.

Quelqu'un saurait-il comment faire ?

--
Cordialement,
Bull


"Fred" a écrit dans le message de news:
%
Dans : news:,
Bull disait :
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner
et que je la lance après un paramètre en ligne de commande. Comment
faire pour transférer le paramètre à l'instance qui tourne déjà ?



Je ne vais pas pouvoir t'être utile là dessus car je n'ai jamais entendu
parler d'une telle possibilité ! Cela me fait plutôt penser à la notion
de service.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT










Avatar
Julien Bakmezdjian [MS]
Bonjour,

J'imagine que vous avez suivi cet article :
http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/pluggable/overview/appendix_a.asp.

Dans ce cas, j'imagine également que dans la situation présente, c'est un
seconde instance de votre application qui est lancée... et que vous voulez
justement que tout s'ouvre dans le même processus... Un petit à la manière
de Word lorsque l'on ouvre un second document (surveillez le gestionnaire
des tâches, vous verrez qu'il n'y a jamais qu'un seul et même process Word,
quelque soit le nombre de fenêtres/documents ouverts...).

Dans ce cas, je pense que l'astuce serait de détecter au lancement de la
seconde instance de votre application l'existence d'une première instance.
Lui passer alors le paramètre qui va bien, puis se terminer... C'est un peu
ce que fait Word d'ailleurs, de manière assez fine... Je vais réfléchir au
meilleur moyen (le plus simple ?) de détecter la première instance et de lui
passer une commande... Pourriez-vous en attendant me confirmer que mes
présomptions sont correctes ?

Cordialement,

Julien Bakmezdjian


"Bull" a écrit dans le message de news:
O$
Bonjour,

Mon application est effectivement une application Windows. Pour être
précis, je souhaite envoyer les informations (en fait juste une url) via
le protocole feed
(http://www.25hoursaday.com/draft-obasanjo-feed-URI-scheme-02.html). J'ai
fait déjà tout le nécessaire dans le registre afin que lorsque le
protocole est utilisé, une commande shell est lancée afin d'exécuter mon
application en passant en ligne de commande l'url en question.

Maintenant, mon problème est lorsque l'application tourne déjà.

Pouvez-vous m'aiguiller vers la solution technique qui vous parait la plus
simple à réaliser ?

Merci d'avance,

--
Cordialement,
Bull


"Julien Bakmezdjian [MS]" a écrit dans le
message de news: %
Bonjour,

Votre application est une application Windows j'imagine ? Depuis quel
endroit souhaitez-vous lui envoyer des informations ?
Plusieurs techniques existent comme l'envoi de messages, la simulation de
frappe de touches, création d'un fichier dans un dossier spécial, clés de
registre, ou encore les fichiers partagés (aucun rapportr avec les
fichiers classiques !), partage d'instances COM (automation)...

Cordialement,

Julien Bakmezdjian

"Bull" a écrit dans le message de news:

Je pense qu'il y a un autre moyen que de passer par un service. En
effet, on a par exemple le cas où en cliquant sur un lien dans son
navigateur, une information est envoyée à l'application qui tourne.

Quelqu'un saurait-il comment faire ?

--
Cordialement,
Bull


"Fred" a écrit dans le message de news:
%
Dans : news:,
Bull disait :
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner
et que je la lance après un paramètre en ligne de commande. Comment
faire pour transférer le paramètre à l'instance qui tourne déjà ?



Je ne vais pas pouvoir t'être utile là dessus car je n'ai jamais
entendu parler d'une telle possibilité ! Cela me fait plutôt penser à
la notion de service.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT














Avatar
Bull
Bonjour,

C'est tout à fait ça. En ce qui concerne la détection qu'une première
instance de l'application tourne déjà, j'ai déjà la fonction. La voici :

Public Sub ProcessExist()

objMutex = New System.Threading.Mutex(False, "Nom_Appli")

If objMutex.WaitOne(0, False) = False Then

objMutex.Close()

objMutex = Nothing

MessageBox.Show("L'application est déjà lancée")

End

End If

End Sub


Il reste donc à passer le paramètre à la première instance avant de fermer
la deuxième.

Merci d'avance pour votre aide
--
Cordialement,
Bull


"Julien Bakmezdjian [MS]" a écrit dans le
message de news:
Bonjour,

J'imagine que vous avez suivi cet article :
http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/pluggable/overview/appendix_a.asp.

Dans ce cas, j'imagine également que dans la situation présente, c'est un
seconde instance de votre application qui est lancée... et que vous voulez
justement que tout s'ouvre dans le même processus... Un petit à la manière
de Word lorsque l'on ouvre un second document (surveillez le gestionnaire
des tâches, vous verrez qu'il n'y a jamais qu'un seul et même process
Word, quelque soit le nombre de fenêtres/documents ouverts...).

Dans ce cas, je pense que l'astuce serait de détecter au lancement de la
seconde instance de votre application l'existence d'une première instance.
Lui passer alors le paramètre qui va bien, puis se terminer... C'est un
peu ce que fait Word d'ailleurs, de manière assez fine... Je vais
réfléchir au meilleur moyen (le plus simple ?) de détecter la première
instance et de lui passer une commande... Pourriez-vous en attendant me
confirmer que mes présomptions sont correctes ?

Cordialement,

Julien Bakmezdjian


"Bull" a écrit dans le message de news:
O$
Bonjour,

Mon application est effectivement une application Windows. Pour être
précis, je souhaite envoyer les informations (en fait juste une url) via
le protocole feed
(http://www.25hoursaday.com/draft-obasanjo-feed-URI-scheme-02.html). J'ai
fait déjà tout le nécessaire dans le registre afin que lorsque le
protocole est utilisé, une commande shell est lancée afin d'exécuter mon
application en passant en ligne de commande l'url en question.

Maintenant, mon problème est lorsque l'application tourne déjà.

Pouvez-vous m'aiguiller vers la solution technique qui vous parait la
plus simple à réaliser ?

Merci d'avance,

--
Cordialement,
Bull


"Julien Bakmezdjian [MS]" a écrit dans le
message de news: %
Bonjour,

Votre application est une application Windows j'imagine ? Depuis quel
endroit souhaitez-vous lui envoyer des informations ?
Plusieurs techniques existent comme l'envoi de messages, la simulation
de frappe de touches, création d'un fichier dans un dossier spécial,
clés de registre, ou encore les fichiers partagés (aucun rapportr avec
les fichiers classiques !), partage d'instances COM (automation)...

Cordialement,

Julien Bakmezdjian

"Bull" a écrit dans le message de news:

Je pense qu'il y a un autre moyen que de passer par un service. En
effet, on a par exemple le cas où en cliquant sur un lien dans son
navigateur, une information est envoyée à l'application qui tourne.

Quelqu'un saurait-il comment faire ?

--
Cordialement,
Bull


"Fred" a écrit dans le message de news:
%
Dans : news:,
Bull disait :
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner
et que je la lance après un paramètre en ligne de commande. Comment
faire pour transférer le paramètre à l'instance qui tourne déjà ?



Je ne vais pas pouvoir t'être utile là dessus car je n'ai jamais
entendu parler d'une telle possibilité ! Cela me fait plutôt penser à
la notion de service.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


















Avatar
Bull
Bonjour Julien,

Tes premières idées m'en ont donné une et j'ai finalement réussi à réaliser
ce que je voulais. Je vous partage le principe dans le cas où vous voudriez
réaliser quelque chose de similaire.

J'utilise un objet FileSystemWatcher qui lève un évènement dès qu'un fichier
texte est modifié.

Lorsqu'une deuxième instance de mon application est lancée avec des
paramètres en ligne de commande, je récupère le paramètre, l'ajoute au
fichier texte puis ferme cette instance. Ainsi, la première instance déjà
lancé détecte que le fichier a été modifié et va lire son contenu.

Et voila, le tour est joué :)
Je ne sais pas si c'est la meilleure méthode, mais elle fonctionne. Si
quelqu'un a mieux, merci de partager ;-)

En tout cas, merci Julien pour ton aide.

--
Cordialement,
Bull


"Bull" a écrit dans le message de news:

Bonjour,

C'est tout à fait ça. En ce qui concerne la détection qu'une première
instance de l'application tourne déjà, j'ai déjà la fonction. La voici :

Public Sub ProcessExist()

objMutex = New System.Threading.Mutex(False, "Nom_Appli")

If objMutex.WaitOne(0, False) = False Then

objMutex.Close()

objMutex = Nothing

MessageBox.Show("L'application est déjà lancée")

End

End If

End Sub


Il reste donc à passer le paramètre à la première instance avant de fermer
la deuxième.

Merci d'avance pour votre aide
--
Cordialement,
Bull


"Julien Bakmezdjian [MS]" a écrit dans le
message de news:
Bonjour,

J'imagine que vous avez suivi cet article :
http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/pluggable/overview/appendix_a.asp.

Dans ce cas, j'imagine également que dans la situation présente, c'est un
seconde instance de votre application qui est lancée... et que vous
voulez justement que tout s'ouvre dans le même processus... Un petit à la
manière de Word lorsque l'on ouvre un second document (surveillez le
gestionnaire des tâches, vous verrez qu'il n'y a jamais qu'un seul et
même process Word, quelque soit le nombre de fenêtres/documents
ouverts...).

Dans ce cas, je pense que l'astuce serait de détecter au lancement de la
seconde instance de votre application l'existence d'une première
instance. Lui passer alors le paramètre qui va bien, puis se terminer...
C'est un peu ce que fait Word d'ailleurs, de manière assez fine... Je
vais réfléchir au meilleur moyen (le plus simple ?) de détecter la
première instance et de lui passer une commande... Pourriez-vous en
attendant me confirmer que mes présomptions sont correctes ?

Cordialement,

Julien Bakmezdjian


"Bull" a écrit dans le message de news:
O$
Bonjour,

Mon application est effectivement une application Windows. Pour être
précis, je souhaite envoyer les informations (en fait juste une url) via
le protocole feed
(http://www.25hoursaday.com/draft-obasanjo-feed-URI-scheme-02.html).
J'ai fait déjà tout le nécessaire dans le registre afin que lorsque le
protocole est utilisé, une commande shell est lancée afin d'exécuter mon
application en passant en ligne de commande l'url en question.

Maintenant, mon problème est lorsque l'application tourne déjà.

Pouvez-vous m'aiguiller vers la solution technique qui vous parait la
plus simple à réaliser ?

Merci d'avance,

--
Cordialement,
Bull


"Julien Bakmezdjian [MS]" a écrit dans
le message de news: %
Bonjour,

Votre application est une application Windows j'imagine ? Depuis quel
endroit souhaitez-vous lui envoyer des informations ?
Plusieurs techniques existent comme l'envoi de messages, la simulation
de frappe de touches, création d'un fichier dans un dossier spécial,
clés de registre, ou encore les fichiers partagés (aucun rapportr avec
les fichiers classiques !), partage d'instances COM (automation)...

Cordialement,

Julien Bakmezdjian

"Bull" a écrit dans le message de news:

Je pense qu'il y a un autre moyen que de passer par un service. En
effet, on a par exemple le cas où en cliquant sur un lien dans son
navigateur, une information est envoyée à l'application qui tourne.

Quelqu'un saurait-il comment faire ?

--
Cordialement,
Bull


"Fred" a écrit dans le message de news:
%
Dans : news:,
Bull disait :
Bonjour Fred,

Merci pour ta réponse si rapide.

Le problème est que je bloque à un autre niveau. En effet, lorsque
l'application ne tourne pas encore, cela fonctionne parfaitement. Le
problème se pose lorsque l'application est déjà en train de tourner
et que je la lance après un paramètre en ligne de commande. Comment
faire pour transférer le paramètre à l'instance qui tourne déjà ?



Je ne vais pas pouvoir t'être utile là dessus car je n'ai jamais
entendu parler d'une telle possibilité ! Cela me fait plutôt penser à
la notion de service.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT