Ecrire sur la sortie standard

KSauzeRK Messages postés 4 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 17 avril 2002 - 17 avril 2002 à 14:13
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 - 18 avril 2002 à 08:57
Bonjour,
Je n'arrive pas a trouver quelle méthode/fonction VB me permet d'écrire tout simplement sur la sortie standard. Le programme que j'écris ne comportera pas d'interface graphique, et sera lancé a partir d'une console DOS, et j'aimerais écrire des informations dans la console. Apparement la méthode Debug.Print écrit uniquement dans la fenêtre exécution de l'environnement de développement, pas sur la sortie standard...
Toute aide est appréciée...

9 réponses

Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
17 avril 2002 à 14:46
Salut,

De mémoire de programmeur VB, je ne connais aucune méthode standard pour faire ce dont tu demandes. En VC++ c'est possible, mais en VB ???

Avec les API's c'est peut-être possible...

Tchao

NéoB
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
17 avril 2002 à 14:54
ReSalut,

Comme je disais dans le message précédent, avec les API's y a moyen:

Va faire un tour ici:

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=30204&lngWId=1

Bonne chance

Tchao

NéoB
0
cs_Dede Messages postés 61 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 24 juillet 2006
17 avril 2002 à 16:32
-------------------------------
Réponse au message :
-------------------------------

Bonjour,
Je n'arrive pas a trouver quelle méthode/fonction VB me permet d'écrire tout simplement sur la sortie standard. Le programme que j'écris ne comportera pas d'interface graphique, et sera lancé a partir d'une console DOS, et j'aimerais écrire des informations dans la console. Apparement la méthode Debug.Print écrit uniquement dans la fenêtre exécution de l'environnement de développement, pas sur la sortie standard...
Toute aide est appréciée...
0
cs_Dede Messages postés 61 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 24 juillet 2006
17 avril 2002 à 16:37
-------------------------------
Réponse au message :
-------------------------------

Bonjour,
Je n'arrive pas a trouver quelle méthode/fonction VB me permet d'écrire tout simplement sur la sortie standard. Le programme que j'écris ne comportera pas d'interface graphique, et sera lancé a partir d'une console DOS, et j'aimerais écrire des informations dans la console. Apparement la méthode Debug.Print écrit uniquement dans la fenêtre exécution de l'environnement de développement, pas sur la sortie standard...
Toute aide est appréciée...

A mon humble avis, une console est connectée par liaison série, il faudrait donc envoyer tes écritures sur la série. Evidement, il faudra paramétrer la console (récepteur) et la liaison PC en cocordance. Puis utiliser Mscom control.
Bonne chance :-)
0

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

Posez votre question
KSauzeRK Messages postés 4 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 17 avril 2002
17 avril 2002 à 17:09
euh...j'ai pas tout compris a ta réponse pour être honnête...si tu peux développer...sinon, merci d'avoir pris le temps de répondre en tout cas :)
0
KSauzeRK Messages postés 4 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 17 avril 2002
17 avril 2002 à 17:19
Salut,
Merci pour tes réponses, j'ai été voir le code sur le lien que tu as indiqué, mais je ne sais pas si je peux en utiliser qu'une partie, sans créer la console entièrement comme il le fait dans son code...j'ai fais un essai avec juste ce code :

Public Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, ByVal lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long
Public Const STD_OUTPUT_HANDLE = -11&
Private hConsoleOut As Long 'The console's output handle
Public Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

Sub Main()
Dim l As Long
hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
l = WriteConsole(hConsoleOut, "hzo,;sezdaz", 11, vbNull, vbNull)
End Sub

Ca n'affiche rien, j'imagine que c'est a cause du handle qui ne correspond pas, je ne sais pas comment récupérer le handle de la fenêtre DOS en cours.

Merci pour vos aides en tout cas, je pensais juste qu'il existait une méthode VB qui pouvait afficher directement sur la sortie standard...

A+
0
cs_Dede Messages postés 61 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 24 juillet 2006
17 avril 2002 à 17:32
-------------------------------
Réponse au message :
-------------------------------

euh...j'ai pas tout compris a ta réponse pour être honnête...si tu peux développer...sinon, merci d'avoir pris le temps de répondre en tout cas :)

-------------------------------
Réponse au message :
-------------------------------

Bonjour,
Je n'arrive pas a trouver quelle méthode/fonction VB me permet d'écrire tout simplement sur la sortie standard. Le programme que j'écris ne comportera pas d'interface graphique, et sera lancé a partir d'une console DOS, et j'aimerais écrire des informations dans la console. Apparement la méthode Debug.Print écrit uniquement dans la fenêtre exécution de l'environnement de développement, pas sur la sortie standard...
Toute aide est appréciée...

A mon humble avis, une console est connectée par liaison série, il faudrait donc envoyer tes écritures sur la série. Evidement, il faudra paramétrer la console (récepteur) et la liaison PC en cocordance. Puis utiliser Mscom control.
Bonne chance :-)

Difficile de répondre en quelques lignes à un sujet aussi vaste que les liaisons série.
La première chose à savoir, c'est si la console dispose d'une prise série (en principe, c'est le cas des consoles). Si c'est le cas, il faut trouver (dans la doc par exemple), le moyen de régler (ou d'obtenir les les réglages actuels) de la dite console.
Dans ta feuille VB, il faut charger le contrôle "Microsoft commcontrol 6.0" (ou équivalent suivant la version VB). Il faut alors placer le contrôle sur la feuille et de là régler les paramètres série en concordance avec ta console.
Pour la programmation elle même, il te faudra entrer dans l'aide Vb et trouver des exemples.
Voila, en espérant que cela va t'aider.
Dede :-)
0
KSauzeRK Messages postés 4 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 17 avril 2002
17 avril 2002 à 17:51
ok je comprends mieux...je me suis mal exprimé, il ne s'agit pas d'une console externe reliée en réseau par un cable série, mais d'une bête boite DOS sous Win NT dans laquelle je veux écrire...désolé pour la confusion
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
18 avril 2002 à 08:57
Salut,

Il te manque l'initialisation de la console (AllocConsole).
Aussi, il faudra libérer la console après son utilisation avec FreeConsole (à mettre qque part quand ton programme se termine).

Donc n'oublie pas déclare ces API's ainsi que toutes les constantes nécessaires.

Avec ceci, ca marche:

Dim szUserInput As String

AllocConsole

'Get the console's handle
hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)
hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
hConsoleErr = GetStdHandle(STD_ERROR_HANDLE)

SetConsoleTitle "Ma belle console"

SetConsoleMode hConsoleIn, ENABLE_WINDOW_INPUT

SetConsoleTextAttribute hConsoleOut, FOREGROUND_RED Or FOREGROUND_GREEN Or FOREGROUND_BLUE Or FOREGROUND_INTENSITY 'Or BACKGROUND_BLUE

WriteConsole hConsoleOut, "Un Exemple", Len(szOut), vbNull, vbNull

Aussi, j'ai remarqué que lorsque l'on ferme la console avec la croix (en haut à droite), le programme VB plante. La seule solution pour éviter ce problème est d'inhiber la croix via API.

Tchao

NéoB
0
Rejoignez-nous