Renvoyer du texte vers cmd [Résolu]

draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention - 16 janv. 2007 à 21:00 - Dernière réponse : draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention
- 18 janv. 2007 à 17:27
Salut a tous,

Eh je cherche le moyen de renvoyer du texte dans la console cmd

Si je fais un WriteConsole sur le StdOutPut du ParentProcess je recoi l'erreur Parametre invalide :(
Une idée ?

 ++

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 janv. 2007 à 17:23
3
Merci
http://www.vbfrance.com/code.aspx?ID=41156




Renfield





Admin CodeS-SourceS

- MVP Visual Basic

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 18 janv. 2007 à 09:40
3
Merci
j'ai mis a jour mon zip, avec un exemple.
http://www.vbfrance.com/code.aspx?ID=41156

j'ai mis une redirection, en plus.....
il ne faut pas utiliser WriteConsole, mais WriteFile, si on redirige la sortie.......

une source qui va, je pense t'intéresser :
http://vb.mvps.org/samples/project.asp?id=console

Renfield
Admin CodeS-SourceS- MVP Visual Basic

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Renfield
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 16 janv. 2007 à 21:09
0
Merci
Ouais...

Ton code d'une part...
et l'exposé clair du but à atteindre, d'autre part,
vaudront mille fois mieux que ce que tu dis dans ton message
Commenter la réponse de jmfmarques
draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention - 16 janv. 2007 à 21:20
0
Merci
Je veux pouvoir renvoyer du texte dans une console cmd depuis un soft lancé par cmd
Pour ca je récupère le StdOutPut dans la structure SYSTEM_PARAMETERS du processus parent et puis je fais un WriteConsole sur ce StdOutPut.
Mais je recoi l'erreur parametre invalide...

Vu que mon code tien sur 4 modules et que je ne suis absolument pas certain que l'on puisse ecrire dans une console de cette facon, je prefere d'abord savoir si la methode est bonne et puis au besoin je mettrais le code voir si c'est pas une erreur de code.

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Commenter la réponse de draluorg
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 16 janv. 2007 à 22:52
0
Merci
En .Net ca marche de cette manière en tout cas :

        Dim p As New Process()
        p.StartInfo.FileName = "ipconfig.exe"
        p.StartInfo.RedirectStandardInput = True
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.UseShellExecute = False
        p.Start()
        Dim r As IO.StreamReader = p.StandardOutput
        MsgBox(r.ReadToEnd)

Je sais pas vraiment comment ca marche en VB6, mais tu remarqueras que pour que ca marche, le processus doit être lancé avec RedirectStandardIn/Outpu = True, y'a peut-être quelque chose dans le même esprit à faire en VB6 quand tu lance ton cmd ?
Sinon donne nous ton code, ce sera beaucoup plus facile pour nous de t'aider !
<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention - 16 janv. 2007 à 23:40
0
Merci
Eh non en fait ce n'est pas mon soft qui lance cmd mais cmd qui lance mon soft
et mon soft doit ecrire dans la console de cmd

J'ai uploadé le code a cette adresse : http://systemzeb.free.fr/Soft/CmdTest.zip

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Commenter la réponse de draluorg
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 17 janv. 2007 à 10:08
0
Merci
Ouaip,
(dsl j'ai pas vb6, donc je te dis à l'aveuglette...)
Essaye un peu de mettre Nothing, à la place du second "ByVal 0&" dans l'appel de WriteConsole, puisqu'il s'attend à un objet et non à un nombre, si ça ne change rien, c'est que c'est ton premier paramètre qui est incorrect, et la je ne sais rien faire pour toi, faut que tu revoie ton code...
<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 17 janv. 2007 à 10:10
0
Merci
Héé mais attends, tu dis que tu fais WriteConsole sur le StdOutput, logiquement, ce serait plutot sur le StdInput que tu devrais écrire, non ?
Sinon un SendKeys ou même un keybd_event, ça ne va pas ?
<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 janv. 2007 à 10:32
0
Merci
"ce serait plutot sur le StdInput que tu devrais écrire, non ?" .... euh, non, on ecrit pas sur le clavier ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 janv. 2007 à 11:08
0
Merci
Tout "simple", en fait

Private Declare Function WriteConsole Lib "kernel32.dll" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, ByVal lpBuffer As String, ByVal nNumberOfCharsToWrite As Long, ByRef lpNumberOfCharsWritten As Long, ByRef lpReserved As Any) As Long
Private Const STD_OUTPUT_HANDLE As Long = -11&


Private Declare Function GetStdHandle Lib "kernel32.dll" (ByVal nStdHandle As Long) As Long


Private Sub Main()
Dim hConsole As Long
Dim sBuffer As String
    sBuffer = "Vous avez dit : " & Command$ & " ??"
    WriteConsole GetStdHandle(STD_OUTPUT_HANDLE), sBuffer, Len(sBuffer), ByVal 0&, ByVal 0&
End Sub

Ensuite, tu compile, et tu transforme ton executable en executable Console... grace au fichier MkConsole.exe
présent ici...

http://www.mvps.org/st-software/Code/all.zip

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 17 janv. 2007 à 13:06
0
Merci
Ca va te fous pas de moi hein !
En DotNet c'est Process.StandardInput.Write, je traduis comme je peux...

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 janv. 2007 à 13:16
0
Merci
"StandardInput" .... et beh, sympa DotNet :p

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention - 17 janv. 2007 à 19:10
0
Merci
Salut a tous,

Merci Renfield

Je ne savais pas qu'il fallait modifier le type de copilation, je pouvais tjs chercher...

Par contre au final j'ai toujours pas ce que je voulais, je faisais ca pour pouvoir recuperer le retour dans une variable depuis un batch, mais cette methode ecrit bien dans la console mais le resultat n'est pas "traitable"

As tu une idee de comment je pourrais faire pour renvoyer une valeur dans le 'buffer' de retour de cmd ?
Encore merci :)

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Commenter la réponse de draluorg
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 janv. 2007 à 19:16
0
Merci
l'API ExitProcess

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention - 17 janv. 2007 à 19:37
0
Merci
Eh oui mais ExitProcess ne permet que de renvoyer un long... (code d'erreur)
Ou puis je faire un truc genre ExitProcess StrPtr(MaVar) ?
Ou bien faire un VirtualAlloc puis faire ExitProcess hVirtual ?

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Commenter la réponse de draluorg
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 janv. 2007 à 21:34
0
Merci
j'avoue que je ne sais pas trop quoi répondre, tu voudrais mettre quoi, derrière ?

(ressemble a un Pipe, ton truc...)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention - 17 janv. 2007 à 21:46
0
Merci
Erf wai c'est pas tres clair dutout ce que j'ai dis la...

En fait je voudrais faire un executable genre ipconfig par exemple qui renvoi les info dans le Pipe de la console "mère"
De maniere a pouvoir l'utiliser dans un batch et recuperer le resultat dans une variable ou le rediriger en faisant "Commande >MonFichier.txt"

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Commenter la réponse de draluorg
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 janv. 2007 à 22:45
0
Merci
pas compris ou ca genait....

WriteConsole fait bien cela, non ?

et un > redirigera dans un fichier.... (GetStdHandle s'occupe de tout cela)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
draluorg 627 Messages postés vendredi 23 avril 2004Date d'inscription 25 novembre 2010 Dernière intervention - 17 janv. 2007 à 23:40
0
Merci
Eh bin non justement ca ne marche pas avec WriteConsole :(
A moins que le flag ne soit pas STD_OUTPUT_HANDLE
Je devrais peut etre en essayer d'autres pour voir...

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Commenter la réponse de draluorg
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 18 janv. 2007 à 09:28
0
Merci
un article interessant :

http://vb.mvps.org/samples/project.asp?id=console

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.