Envoi d'une commande dos dans un programme déjà ouvert

Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007 - 10 mars 2006 à 15:59
Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007 - 11 mars 2006 à 00:03
Bonjour à tous.

Je travaille actuellement sur un projet dans lequel j'ai besoin de lancer une application tournant dans une fenêtre DOS. (Du style cmd.exe).

Jusque là tout va bien, j'arrive à ouvrir mon programme.

Une fois que ce programme est ouvert je voudrais lui envoyer différentes lignes de commandes.

Si je garde mon exemple du cmd, je voudrais par exemple, lorsque je clique sur un bouton, envoyer "ping x.x.x.x", si je clique sur un autre, ca envoie "arp -a" etc.
Comment puis je parvenir à ce resultat ?

Merci d'avance.

Nico

8 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 mars 2006 à 16:14
salut,

avec SendMessage, ou SendKeys

++
0
Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007
10 mars 2006 à 17:08
Merci pour ta reponse.

Seulement je ne crois pas avoir tout saisi.

En effet SendKeys envoie un message à la fenetre active. Mais cela ne fonctionne visiblement que dans l'appli et pas dans les programmes externes.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 mars 2006 à 17:38
si si, sans problème. il faut juste donner le focus à ton cmd (SetForegroundWindow)
0
Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007
10 mars 2006 à 18:04
Impeccable, j'ai réussi à écrire dans ma fenêtre dos.

Seulement je actuellement je donne le focus mauellement à ma fenetre, n'ayant pas trouver comment le faire par le code.
Je n'ai pas trouvé le SetForegroundWindow dans l'aide.

Voici mon code :

Private Sub Lancer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLancer.Click
proc.StartInfo.FileName = "cmd.exe"
proc.Start()

'proc.StartInfo.UseShellExecute = False
'proc.StartInfo.RedirectStandardInput = True
End Sub

Private Sub btnRecord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecord.Click

SendKeys.Send("uh")
SendKeys.Send(vbCrLf)
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 mars 2006 à 18:14
arf, en .net je ne sais pas vraiment...


il te faut le handle de ta fenêtre. peut-être ton proc.start() te le renvoie?


si oui dans ce cas, avec l'API pré-citée ;)
0
Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007
10 mars 2006 à 18:24
J'ai reussi en utilisant AppActivate(proc.id)

Mais j'ai maintenant un autre soucis. Si je veux que mon utilisateur ne voit pas ma fenêtre dos (WindowStyle = ProcessWindowStyle.Hidden) je ne peux pas utiliser cette méthode malheureusement.

Merci tout de même pour ton aide :)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 mars 2006 à 18:45
ouai, là tu n'auras ni le sendkeys, ni le focus.

il faut utiliser sendmessage ou postmessage obligatoirement
0
Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007
11 mars 2006 à 00:03
J'ai lu qu'on pouvait ecrire dans une fenetre grace a un streamwriter mais je ne sais pas par le biais de quelle propriété assigné le streamwriter à mon procesus.
0
Rejoignez-nous