URGENT !!!! --- Sortie standard de Vb -- URGENT !!!!
2 réponses
Jo
Bonjour à tous !
Mon problème est très simple ( enfin en apparence ),
je lance un exe Vb6 depuis un bat dos,
je souhaiterai, via une redirection dos ( > ) récupérer des infos
de mon exe Vb6.
Autrement dit, je souhaiterai l'équivalent de l'écriture vers
la sortie standard C : printf mais en Vb6 !!!!!!
Je ne souhaite pas changer de méthode, il me faut impérativement
récupérer via la redirection dos des éléments générés depuis mon VB6.
JE VEUX ECRIRE DE VB6 VERS LA SORTIE STANDARD PUIS RECUPERE PAR LA
REDIRECTION LE CONTENU DE CE QUE J'AI ECRIT !!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent Guichard
Jo a écrit :
Bonjour à tous !
Mon problème est très simple ( enfin en apparence ), je lance un exe Vb6 depuis un bat dos, je souhaiterai, via une redirection dos ( > ) récupérer des infos de mon exe Vb6. Autrement dit, je souhaiterai l'équivalent de l'écriture vers la sortie standard C : printf mais en Vb6 !!!!!! Je ne souhaite pas changer de méthode, il me faut impérativement récupérer via la redirection dos des éléments générés depuis mon VB6.
JE VEUX ECRIRE DE VB6 VERS LA SORTIE STANDARD PUIS RECUPERE PAR LA REDIRECTION LE CONTENU DE CE QUE J'AI ECRIT !!
Mon problème est très simple ( enfin en apparence ),
je lance un exe Vb6 depuis un bat dos,
je souhaiterai, via une redirection dos ( > ) récupérer des infos
de mon exe Vb6.
Autrement dit, je souhaiterai l'équivalent de l'écriture vers
la sortie standard C : printf mais en Vb6 !!!!!!
Je ne souhaite pas changer de méthode, il me faut impérativement
récupérer via la redirection dos des éléments générés depuis mon VB6.
JE VEUX ECRIRE DE VB6 VERS LA SORTIE STANDARD PUIS RECUPERE PAR LA
REDIRECTION LE CONTENU DE CE QUE J'AI ECRIT !!
Mon problème est très simple ( enfin en apparence ), je lance un exe Vb6 depuis un bat dos, je souhaiterai, via une redirection dos ( > ) récupérer des infos de mon exe Vb6. Autrement dit, je souhaiterai l'équivalent de l'écriture vers la sortie standard C : printf mais en Vb6 !!!!!! Je ne souhaite pas changer de méthode, il me faut impérativement récupérer via la redirection dos des éléments générés depuis mon VB6.
JE VEUX ECRIRE DE VB6 VERS LA SORTIE STANDARD PUIS RECUPERE PAR LA REDIRECTION LE CONTENU DE CE QUE J'AI ECRIT !!
Autrement dit, je souhaiterai l'équivalent de l'écriture vers la sortie standard C : printf mais en Vb6 !!!!!!
JE VEUX ECRIRE DE VB6 VERS LA SORTIE STANDARD PUIS RECUPERE PAR LA REDIRECTION LE CONTENU DE CE QUE J'AI ECRIT !!
PAR AVANCE, UN GRAND MERCI A MON SAUVEUR
Hello,
Il te "suffit" de récupérer stdout (GetStdHandle) et d'écrire dessus (WriteFile)... simple quand on s'appelle application console... moins dans les autres cas! On peut toujours s'allouer une nouvelle console (AllocConsole), ou sous XP s'attacher à la console parente (AttachConsole(-1)), mais on ne peut toujours pas réutiliser ces données d'une manière ou d'une autre dans le batch...
Comment faire alors? c'est simple : réaliser une application console! Comment faire? modifier le bit approprié dans l'exécutable PE après compilation (très simple... pour la format des exécutables PE, voir sur le site de Microsoft) ou alors passer les bons paramètres au linker en utilisant l'une ou l'autre technique pour intercepter les appels à celui ci, ou encore... (ben oui, c'est simple!)
Donc, si tu as EditBin: editbin.exe /SUBSYSTEM:CONSOLE Projet1.exe où projet1.exe doit être remplacé par le nom de l'exécutable
Ensuite, dans un module: Option Explicit
Private Declare Function GetStdHandle _ Lib "Kernel32" _ ( _ ByVal nStdHandle As Long _ ) _ As Long Private Declare Function WriteFile _ Lib "Kernel32" _ ( _ ByVal hFile As Long, _ lpBuffer As Any, _ ByVal nNumberOfBytesToWrite As Long, _ lpNumberOfBytesWritten As Long, _ lpOverlapped As Any _ ) _ As Long
Private Const STD_OUTPUT_HANDLE = -11& Private hConsole As Long
Public Sub WriteText(Text As String) Dim CharWritten As Long
If (hConsole) Then WriteFile hConsole, ByVal Text, Len(Text), CharWritten, ByVal 0& End If End Sub
Public Sub GetConsole() hConsole = GetStdHandle(STD_OUTPUT_HANDLE) End Sub
Public Sub Main() GetConsole WriteText "Hello World!" End Sub En effectuant quelques recherches, cet article semble tout expliquer encore plus complètement: http://vb.mvps.org/samples/project.asp?id=console
-- Picalausa François
PS: PAS BESOIN DE CRIER! Ca fait mal aux yeux....
"Jo" <Jo@discussions.microsoft.com> a écrit dans le message de news:
FD3319A0-0B10-4243-92D1-827080161510@microsoft.com...
Autrement dit, je souhaiterai l'équivalent de l'écriture vers
la sortie standard C : printf mais en Vb6 !!!!!!
JE VEUX ECRIRE DE VB6 VERS LA SORTIE STANDARD PUIS RECUPERE PAR LA
REDIRECTION LE CONTENU DE CE QUE J'AI ECRIT !!
PAR AVANCE, UN GRAND MERCI A MON SAUVEUR
Hello,
Il te "suffit" de récupérer stdout (GetStdHandle) et d'écrire dessus
(WriteFile)... simple quand on s'appelle application console... moins dans
les autres cas! On peut toujours s'allouer une nouvelle console
(AllocConsole), ou sous XP s'attacher à la console parente
(AttachConsole(-1)), mais on ne peut toujours pas réutiliser ces données
d'une manière ou d'une autre dans le batch...
Comment faire alors? c'est simple : réaliser une application console!
Comment faire? modifier le bit approprié dans l'exécutable PE après
compilation (très simple... pour la format des exécutables PE, voir sur le
site de Microsoft) ou alors passer les bons paramètres au linker en
utilisant l'une ou l'autre technique pour intercepter les appels à celui ci,
ou encore... (ben oui, c'est simple!)
Donc, si tu as EditBin:
editbin.exe /SUBSYSTEM:CONSOLE Projet1.exe
où projet1.exe doit être remplacé par le nom de l'exécutable
Ensuite, dans un module:
Option Explicit
Private Declare Function GetStdHandle _
Lib "Kernel32" _
( _
ByVal nStdHandle As Long _
) _
As Long
Private Declare Function WriteFile _
Lib "Kernel32" _
( _
ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, _
lpOverlapped As Any _
) _
As Long
Private Const STD_OUTPUT_HANDLE = -11&
Private hConsole As Long
Public Sub WriteText(Text As String)
Dim CharWritten As Long
If (hConsole) Then
WriteFile hConsole, ByVal Text, Len(Text), CharWritten, ByVal 0&
End If
End Sub
Public Sub GetConsole()
hConsole = GetStdHandle(STD_OUTPUT_HANDLE)
End Sub
Public Sub Main()
GetConsole
WriteText "Hello World!"
End Sub
En effectuant quelques recherches, cet article semble tout expliquer encore
plus complètement:
http://vb.mvps.org/samples/project.asp?id=console
Autrement dit, je souhaiterai l'équivalent de l'écriture vers la sortie standard C : printf mais en Vb6 !!!!!!
JE VEUX ECRIRE DE VB6 VERS LA SORTIE STANDARD PUIS RECUPERE PAR LA REDIRECTION LE CONTENU DE CE QUE J'AI ECRIT !!
PAR AVANCE, UN GRAND MERCI A MON SAUVEUR
Hello,
Il te "suffit" de récupérer stdout (GetStdHandle) et d'écrire dessus (WriteFile)... simple quand on s'appelle application console... moins dans les autres cas! On peut toujours s'allouer une nouvelle console (AllocConsole), ou sous XP s'attacher à la console parente (AttachConsole(-1)), mais on ne peut toujours pas réutiliser ces données d'une manière ou d'une autre dans le batch...
Comment faire alors? c'est simple : réaliser une application console! Comment faire? modifier le bit approprié dans l'exécutable PE après compilation (très simple... pour la format des exécutables PE, voir sur le site de Microsoft) ou alors passer les bons paramètres au linker en utilisant l'une ou l'autre technique pour intercepter les appels à celui ci, ou encore... (ben oui, c'est simple!)
Donc, si tu as EditBin: editbin.exe /SUBSYSTEM:CONSOLE Projet1.exe où projet1.exe doit être remplacé par le nom de l'exécutable
Ensuite, dans un module: Option Explicit
Private Declare Function GetStdHandle _ Lib "Kernel32" _ ( _ ByVal nStdHandle As Long _ ) _ As Long Private Declare Function WriteFile _ Lib "Kernel32" _ ( _ ByVal hFile As Long, _ lpBuffer As Any, _ ByVal nNumberOfBytesToWrite As Long, _ lpNumberOfBytesWritten As Long, _ lpOverlapped As Any _ ) _ As Long
Private Const STD_OUTPUT_HANDLE = -11& Private hConsole As Long
Public Sub WriteText(Text As String) Dim CharWritten As Long
If (hConsole) Then WriteFile hConsole, ByVal Text, Len(Text), CharWritten, ByVal 0& End If End Sub
Public Sub GetConsole() hConsole = GetStdHandle(STD_OUTPUT_HANDLE) End Sub
Public Sub Main() GetConsole WriteText "Hello World!" End Sub En effectuant quelques recherches, cet article semble tout expliquer encore plus complètement: http://vb.mvps.org/samples/project.asp?id=console