Exécuter une commande DOS, rajouter une option dans le clique droit
18 réponses
Guillaume
Bonjour à tous
Voilà, je me met au C# alor que je n'ais jamais dévellopé qu'en PHP, donc
j'ai un peut du mal
En fait, je galaire surtout sur 2 truc :
Premièrement, j'aimerais intaragire avec un programme en ligne de commande,
pour pouvoire faire une interface utilisateur. Donc, passer des commandes,
puis récupérer le résultat pour savoir comment réagire.
A savoir que quand le programme en question est lancé, on ne revien pas
forcément à l'invite c:\>, mais que j'ai quand meme besoin de continuer à
passer des commandes au pragramme quand il l'attend
Deuxièmement, j'aimerais pouvoire rajouter une option dans le menu clique
droit de Windows lorsque on le fait sur un fichier (comme le font par
exemple les logiciel de compression/decompression), mais je n'arrive pas à
trouver comment faire...
Si on redirige l'entrée, l'application est effectivement susceptible de sortir du contrôle de l'utilisateur, si le flux d'entrée ne contient pas ce qu'il faut jusqu'à la fermeture de l'application.
Mais à propos, je ne suis pas bien sûr d'avoir vu où est défini StandardInput ; ça fait que je ne suis pas très à l'aise pour regarder ce qu'il y a dedans, si tant est que c'est défini dans ton message.
Merci pour cette précision qui m'a permit de résoudre mon probleme : j'ai remplacé tout les WaitForExit(); par des WaitForExit(1000); ce qui fait que je reprend la main, et je récupère le résultat !
Merci beaucoup pour votre aide à tous !
"Gloops" <gloops@invalid.zailes.org> a écrit dans le message de
Bonjour,
Si on redirige l'entrée, l'application est effectivement susceptible de
sortir du contrôle de l'utilisateur, si le flux d'entrée ne contient pas ce
qu'il faut jusqu'à la fermeture de l'application.
Mais à propos, je ne suis pas bien sûr d'avoir vu où est défini
StandardInput ; ça fait que je ne suis pas très à l'aise pour regarder ce
qu'il y a dedans, si tant est que c'est défini dans ton message.
Merci pour cette précision qui m'a permit de résoudre mon probleme : j'ai
remplacé tout les
WaitForExit();
par des
WaitForExit(1000);
ce qui fait que je reprend la main, et je récupère le résultat !
Si on redirige l'entrée, l'application est effectivement susceptible de sortir du contrôle de l'utilisateur, si le flux d'entrée ne contient pas ce qu'il faut jusqu'à la fermeture de l'application.
Mais à propos, je ne suis pas bien sûr d'avoir vu où est défini StandardInput ; ça fait que je ne suis pas très à l'aise pour regarder ce qu'il y a dedans, si tant est que c'est défini dans ton message.
Merci pour cette précision qui m'a permit de résoudre mon probleme : j'ai remplacé tout les WaitForExit(); par des WaitForExit(1000); ce qui fait que je reprend la main, et je récupère le résultat !
Merci beaucoup pour votre aide à tous !
Guillaume
> Merci beaucoup pour votre aide à tous !
Bon, en fait, à peine je considère que ça marche que je me retrouve face à un GROS probleme : Si je veux pouvoire lire le résultat de standartOutput, je suis obligé de fermer le process avant...
Ce qui fait que pour une communication interactive c'est plutot compromis !
Dans mon idé, j'aurais voulu faire un truc comme ça :
Je lance CMD J'envoi echo coucou Je regarde si coucou s'est bien affiché Je lance echo coucou 2 Je regarde si coucou 2 s'est bien affiché
Mais ça, y'a pas moyen, car pour lire le résultat de echo coucou, je suis obligé de fermer CMD, donc, si je veux par la suite envoyer echo coucou 2, je suis obligé de relancer CMD...
Bref, si quelqu'un as une idée...
Merci d'avance !
>
Merci beaucoup pour votre aide à tous !
Bon, en fait, à peine je considère que ça marche que je me retrouve face à
un GROS probleme :
Si je veux pouvoire lire le résultat de standartOutput, je suis obligé de
fermer le process avant...
Ce qui fait que pour une communication interactive c'est plutot compromis !
Dans mon idé, j'aurais voulu faire un truc comme ça :
Je lance CMD
J'envoi echo coucou
Je regarde si coucou s'est bien affiché
Je lance echo coucou 2
Je regarde si coucou 2 s'est bien affiché
Mais ça, y'a pas moyen, car pour lire le résultat de echo coucou, je suis
obligé de fermer CMD, donc, si je veux par la suite envoyer echo coucou 2,
je suis obligé de relancer CMD...
Bon, en fait, à peine je considère que ça marche que je me retrouve face à un GROS probleme : Si je veux pouvoire lire le résultat de standartOutput, je suis obligé de fermer le process avant...
Ce qui fait que pour une communication interactive c'est plutot compromis !
Dans mon idé, j'aurais voulu faire un truc comme ça :
Je lance CMD J'envoi echo coucou Je regarde si coucou s'est bien affiché Je lance echo coucou 2 Je regarde si coucou 2 s'est bien affiché
Mais ça, y'a pas moyen, car pour lire le résultat de echo coucou, je suis obligé de fermer CMD, donc, si je veux par la suite envoyer echo coucou 2, je suis obligé de relancer CMD...
Bref, si quelqu'un as une idée...
Merci d'avance !
Gilles Kohl [MVP]
On Sun, 27 Apr 2008 18:43:18 +0200, "Guillaume" wrote:
Bonjour, et merci pour ces informations. Bon, comme je le disait, je suis vraiment débutant en C#, donc je galaire vraiment...
Mais j'ai essayer de me dépatouiller avec la doc grace à vous infos, et j'ai pondu un code qui me semble correcte. Cepandant, pour un raison qui m'échappe totalement, la ligne ou je set le standardInput à true fait completement planter l'apli quand je la test, et je suis obligé de killer le process pour pouvoire retourner à l'IDE...
Voici un example de cmd.exe "télécommandé" qui fonctionne aussi longtemps que vous pouvez vous limiter à la ligne de texte comme unité d'entrée/sortie.
Créez une nouvelle application WinForm, avec un formulaire "Form1", une textbox que vous appelez "textBoxCommand" et une autre "textBoxOutput". La proprieté "multiline" de celle-ci doit etre à "true". Ajoutez un bouton "buttonExec".
Positionnez textBoxCommand en haut de Form1, buttonExec a coté, le reste de la place étant pris par "textBoxOutput".
(Ajoutez de l'anchoring a votre gout)
Clickez double sur Form1 pour créer une méthode vide Form1_Load. De meme pour buttonExec. Vous finirez - sous VS2005 - plus ou moins avec ceci:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;
namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
Cela lancera CMD.EXE sans fenetre, et fera executer la commande "VERsion", en captant la sortie. Ensuite, entrez une commande dans textBoxCommand, par example "DIR", et cliquez sur "buttonExec".
Amicalement, Gilles.
Regards, Gilles [MVP].
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 27 Apr 2008 18:43:18 +0200, "Guillaume" <no@spam.com> wrote:
Bonjour, et merci pour ces informations.
Bon, comme je le disait, je suis vraiment débutant en C#, donc je galaire
vraiment...
Mais j'ai essayer de me dépatouiller avec la doc grace à vous infos, et j'ai
pondu un code qui me semble correcte.
Cepandant, pour un raison qui m'échappe totalement, la ligne ou je set le
standardInput à true fait completement planter l'apli quand je la test, et
je suis obligé de killer le process pour pouvoire retourner à l'IDE...
Voici un example de cmd.exe "télécommandé" qui fonctionne aussi
longtemps que vous pouvez vous limiter à la ligne de texte comme unité
d'entrée/sortie.
Créez une nouvelle application WinForm, avec un formulaire "Form1",
une textbox que vous appelez "textBoxCommand" et une autre
"textBoxOutput". La proprieté "multiline" de celle-ci doit etre à
"true". Ajoutez un bouton "buttonExec".
Positionnez textBoxCommand en haut de Form1, buttonExec a coté, le
reste de la place étant pris par "textBoxOutput".
(Ajoutez de l'anchoring a votre gout)
Clickez double sur Form1 pour créer une méthode vide Form1_Load. De
meme pour buttonExec. Vous finirez - sous VS2005 - plus ou moins avec
ceci:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Cela lancera CMD.EXE sans fenetre, et fera executer la commande
"VERsion", en captant la sortie. Ensuite, entrez une commande dans
textBoxCommand, par example "DIR", et cliquez sur "buttonExec".
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 27 Apr 2008 18:43:18 +0200, "Guillaume" wrote:
Bonjour, et merci pour ces informations. Bon, comme je le disait, je suis vraiment débutant en C#, donc je galaire vraiment...
Mais j'ai essayer de me dépatouiller avec la doc grace à vous infos, et j'ai pondu un code qui me semble correcte. Cepandant, pour un raison qui m'échappe totalement, la ligne ou je set le standardInput à true fait completement planter l'apli quand je la test, et je suis obligé de killer le process pour pouvoire retourner à l'IDE...
Voici un example de cmd.exe "télécommandé" qui fonctionne aussi longtemps que vous pouvez vous limiter à la ligne de texte comme unité d'entrée/sortie.
Créez une nouvelle application WinForm, avec un formulaire "Form1", une textbox que vous appelez "textBoxCommand" et une autre "textBoxOutput". La proprieté "multiline" de celle-ci doit etre à "true". Ajoutez un bouton "buttonExec".
Positionnez textBoxCommand en haut de Form1, buttonExec a coté, le reste de la place étant pris par "textBoxOutput".
(Ajoutez de l'anchoring a votre gout)
Clickez double sur Form1 pour créer une méthode vide Form1_Load. De meme pour buttonExec. Vous finirez - sous VS2005 - plus ou moins avec ceci:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;
namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
Cela lancera CMD.EXE sans fenetre, et fera executer la commande "VERsion", en captant la sortie. Ensuite, entrez une commande dans textBoxCommand, par example "DIR", et cliquez sur "buttonExec".
Amicalement, Gilles.
Regards, Gilles [MVP].
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
Gilles Kohl [MVP]
On Mon, 28 Apr 2008 09:24:26 +0200, "Guillaume" wrote:
Merci beaucoup pour votre aide à tous !
Bon, en fait, à peine je considère que ça marche que je me retrouve face à un GROS probleme : Si je veux pouvoire lire le résultat de standartOutput, je suis obligé de fermer le process avant...
Ce qui fait que pour une communication interactive c'est plutot compromis !
Dans mon idé, j'aurais voulu faire un truc comme ça :
Je lance CMD J'envoi echo coucou Je regarde si coucou s'est bien affiché Je lance echo coucou 2 Je regarde si coucou 2 s'est bien affiché
Mais ça, y'a pas moyen, car pour lire le résultat de echo coucou, je suis obligé de fermer CMD, donc, si je veux par la suite envoyer echo coucou 2, je suis obligé de relancer CMD...
Bref, si quelqu'un as une idée...
Merci d'avance !
Cf. l'exemple que je viens de poster, j'espère que ca marchera de cette facon.
Amicalement, Gilles.
Regards, Gilles [MVP].
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
On Mon, 28 Apr 2008 09:24:26 +0200, "Guillaume" <no@spam.com> wrote:
Merci beaucoup pour votre aide à tous !
Bon, en fait, à peine je considère que ça marche que je me retrouve face à
un GROS probleme :
Si je veux pouvoire lire le résultat de standartOutput, je suis obligé de
fermer le process avant...
Ce qui fait que pour une communication interactive c'est plutot compromis !
Dans mon idé, j'aurais voulu faire un truc comme ça :
Je lance CMD
J'envoi echo coucou
Je regarde si coucou s'est bien affiché
Je lance echo coucou 2
Je regarde si coucou 2 s'est bien affiché
Mais ça, y'a pas moyen, car pour lire le résultat de echo coucou, je suis
obligé de fermer CMD, donc, si je veux par la suite envoyer echo coucou 2,
je suis obligé de relancer CMD...
Bref, si quelqu'un as une idée...
Merci d'avance !
Cf. l'exemple que je viens de poster, j'espère que ca marchera de
cette facon.
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
On Mon, 28 Apr 2008 09:24:26 +0200, "Guillaume" wrote:
Merci beaucoup pour votre aide à tous !
Bon, en fait, à peine je considère que ça marche que je me retrouve face à un GROS probleme : Si je veux pouvoire lire le résultat de standartOutput, je suis obligé de fermer le process avant...
Ce qui fait que pour une communication interactive c'est plutot compromis !
Dans mon idé, j'aurais voulu faire un truc comme ça :
Je lance CMD J'envoi echo coucou Je regarde si coucou s'est bien affiché Je lance echo coucou 2 Je regarde si coucou 2 s'est bien affiché
Mais ça, y'a pas moyen, car pour lire le résultat de echo coucou, je suis obligé de fermer CMD, donc, si je veux par la suite envoyer echo coucou 2, je suis obligé de relancer CMD...
Bref, si quelqu'un as une idée...
Merci d'avance !
Cf. l'exemple que je viens de poster, j'espère que ca marchera de cette facon.
Amicalement, Gilles.
Regards, Gilles [MVP].
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
Gloops
Guillaume a écrit, le 28/04/2008 09:12 :
"Gloops" a écrit dans le message de
Bonjour,
Si on redirige l'entrée, l'application est effectivement susceptible de sortir du contrôle de l'utilisateur, si le flux d'entrée ne contient pas ce qu'il faut jusqu'à la fermeture de l'application.
Mais à propos, je ne suis pas bien sûr d'avoir vu où est défin i StandardInput ; ça fait que je ne suis pas très à l'aise pour re garder ce qu'il y a dedans, si tant est que c'est défini dans ton message.
Merci pour cette précision qui m'a permit de résoudre mon probleme : j'ai remplacé tout les WaitForExit(); par des WaitForExit(1000); ce qui fait que je reprend la main, et je récupère le résultat !
Suffisait d'y penser :) évidemment, encore s'agit-il de laisser suffisamment de temps au programme CMD pour fournir sa sortie.
A propos, au départ ce serait bien de définir ce qu'il y a à faire. Si ça se trouve, conserver le programme en ligne de commandes n'est peut-être pas la meilleure solution ?
Guillaume a écrit, le 28/04/2008 09:12 :
"Gloops" <gloops@invalid.zailes.org> a écrit dans le message de
Bonjour,
Si on redirige l'entrée, l'application est effectivement susceptible
de sortir du contrôle de l'utilisateur, si le flux d'entrée ne
contient pas ce qu'il faut jusqu'à la fermeture de l'application.
Mais à propos, je ne suis pas bien sûr d'avoir vu où est défin i
StandardInput ; ça fait que je ne suis pas très à l'aise pour re garder
ce qu'il y a dedans, si tant est que c'est défini dans ton message.
Merci pour cette précision qui m'a permit de résoudre mon probleme :
j'ai remplacé tout les
WaitForExit();
par des
WaitForExit(1000);
ce qui fait que je reprend la main, et je récupère le résultat !
Suffisait d'y penser :)
évidemment, encore s'agit-il de laisser suffisamment de temps au
programme CMD pour fournir sa sortie.
A propos, au départ ce serait bien de définir ce qu'il y a à faire. Si
ça se trouve, conserver le programme en ligne de commandes n'est
peut-être pas la meilleure solution ?
Si on redirige l'entrée, l'application est effectivement susceptible de sortir du contrôle de l'utilisateur, si le flux d'entrée ne contient pas ce qu'il faut jusqu'à la fermeture de l'application.
Mais à propos, je ne suis pas bien sûr d'avoir vu où est défin i StandardInput ; ça fait que je ne suis pas très à l'aise pour re garder ce qu'il y a dedans, si tant est que c'est défini dans ton message.
Merci pour cette précision qui m'a permit de résoudre mon probleme : j'ai remplacé tout les WaitForExit(); par des WaitForExit(1000); ce qui fait que je reprend la main, et je récupère le résultat !
Suffisait d'y penser :) évidemment, encore s'agit-il de laisser suffisamment de temps au programme CMD pour fournir sa sortie.
A propos, au départ ce serait bien de définir ce qu'il y a à faire. Si ça se trouve, conserver le programme en ligne de commandes n'est peut-être pas la meilleure solution ?
Guillaume
> Cf. l'exemple que je viens de poster, j'espère que ca marchera de cette facon.
Amicalement, Gilles.
Merci beaucoup pour votre aide, celà semble parfaitement correspondre à ce que je cherche à faire.
Je me penche dessus des que j'ai un istant, et vous tien au courrant du résultat.
Quoi qu'il en soit, merci beaucoup de m'aider comme vous le faite !
Cordialement
> Cf. l'exemple que je viens de poster, j'espère que ca marchera de
cette facon.
Amicalement,
Gilles.
Merci beaucoup pour votre aide, celà semble parfaitement correspondre à ce
que je cherche à faire.
Je me penche dessus des que j'ai un istant, et vous tien au courrant du
résultat.
Quoi qu'il en soit, merci beaucoup de m'aider comme vous le faite !
> Cf. l'exemple que je viens de poster, j'espère que ca marchera de cette facon.
Amicalement, Gilles.
Merci beaucoup pour votre aide, celà semble parfaitement correspondre à ce que je cherche à faire.
Je me penche dessus des que j'ai un istant, et vous tien au courrant du résultat.
Quoi qu'il en soit, merci beaucoup de m'aider comme vous le faite !
Cordialement
Guillaume
>A propos, au départ ce serait bien de définir ce qu'il y a à faire. Si ça se trouve, conserver le programme en ligne de commandes n'est peut-être pas la meilleure solution ?
Je ne comprend pas bien le sens de votre question...
Ce que je cherche à faire, c'est de créer des GUI pour des logiciels en ligne de commande, comme photorec ou GPG
Alors oui, je sais, il existe déjà WinPT pour GPG, et peut etre existe t il déjà quelquechose pour photorec, mais je voudrais savoir faire ça, c'est tout...
Je cherche à apprendre le C#, et il faut bien commencer par quelque chose. Comme se genre d'application m'interresse, je commence par là, voilà tout ^^
En tout cas, merci pour toute l'aide qui m'est apporté dans cette démarche sur ce newsgroup !
Cordialement
>A propos, au départ ce serait bien de définir ce qu'il y a à faire. Si ça
se trouve, conserver le programme en ligne de commandes n'est peut-être pas
la meilleure solution ?
Je ne comprend pas bien le sens de votre question...
Ce que je cherche à faire, c'est de créer des GUI pour des logiciels en
ligne de commande, comme photorec ou GPG
Alors oui, je sais, il existe déjà WinPT pour GPG, et peut etre existe t il
déjà quelquechose pour photorec, mais je voudrais savoir faire ça, c'est
tout...
Je cherche à apprendre le C#, et il faut bien commencer par quelque chose.
Comme se genre d'application m'interresse, je commence par là, voilà tout ^^
En tout cas, merci pour toute l'aide qui m'est apporté dans cette démarche
sur ce newsgroup !
>A propos, au départ ce serait bien de définir ce qu'il y a à faire. Si ça se trouve, conserver le programme en ligne de commandes n'est peut-être pas la meilleure solution ?
Je ne comprend pas bien le sens de votre question...
Ce que je cherche à faire, c'est de créer des GUI pour des logiciels en ligne de commande, comme photorec ou GPG
Alors oui, je sais, il existe déjà WinPT pour GPG, et peut etre existe t il déjà quelquechose pour photorec, mais je voudrais savoir faire ça, c'est tout...
Je cherche à apprendre le C#, et il faut bien commencer par quelque chose. Comme se genre d'application m'interresse, je commence par là, voilà tout ^^
En tout cas, merci pour toute l'aide qui m'est apporté dans cette démarche sur ce newsgroup !
Cordialement
Gloops
Guillaume a écrit, le 30/04/2008 19:30 :
Alors oui, je sais, il existe déjà WinPT pour GPG, et peut etre exi ste t il déjà quelquechose pour photorec, mais je voudrais savoir faire ç a, c'est tout...
Effectivement, vu comme ça, c'est bien la bonne piste :)
Guillaume a écrit, le 30/04/2008 19:30 :
Alors oui, je sais, il existe déjà WinPT pour GPG, et peut etre exi ste t
il déjà quelquechose pour photorec, mais je voudrais savoir faire ç a,
c'est tout...
Effectivement, vu comme ça, c'est bien la bonne piste :)
Alors oui, je sais, il existe déjà WinPT pour GPG, et peut etre exi ste t il déjà quelquechose pour photorec, mais je voudrais savoir faire ç a, c'est tout...
Effectivement, vu comme ça, c'est bien la bonne piste :)