DOS

cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 - 17 mars 2006 à 11:58
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 - 22 janv. 2007 à 12:02
Comment écrire à n'importe quel endroit dans une fenêtre DOS ?
(en vb ou vb.net peut importe)

Je voudrais afficher un pourcentage de progression dans une fenêtre DOS sans que ç change de ligne à chaque changement de valeur...

-- Pourquoi faire simple quand on peut faire compliquer --

8 réponses

CTAC Messages postés 133 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juin 2012 5
17 mars 2006 à 18:55
Bonjour,



Peut être en s'inspirant de ça.

Private Declare Function SetConsoleCursorPosition& _
Lib "kernel32" _
(ByVal hConsoleOutput&, ByVal dwCursorPosition&)

Private Declare Function WriteConsole& _
Lib "kernel32" Alias "WriteConsoleA" _
(ByVal hConsoleOutput&, ByRef lpBuffer As Any, ByVal nNumberOfCharsToWrite&, _
ByRef lpNumberOfCharsWritten&, ByRef lpReserved As Any)

Private Declare Function SetConsoleTitle& _
Lib "kernel32" Alias "SetConsoleTitleA" _
(ByVal lpConsoleTitle$)

Private Declare Function AllocConsole& _
Lib "kernel32" _
()

Private Declare Function FreeConsole& _
Lib "kernel32" _
()

Private Declare Function GetStdHandle& _
Lib "kernel32" _
(ByVal nStdHandle&)

Private Declare Function GetTickCount& _
Lib "kernel32" _
()

Sub Demo_SetConsoleCursorPosition()
Const STD_OUTPUT_HANDLE& = -11&
Dim Titre$, Texte$, I&, Hwnd&, X&, Y&
Titre = "Utilisation de SetConsoleCursorPosition"
If AllocConsole Then
SetConsoleTitle ByVal Titre
Hwnd = GetStdHandle(STD_OUTPUT_HANDLE)
X = 5&
Y = 15&
SetConsoleCursorPosition Hwnd, X + Y * &H10000
Texte "Un message pendant cinq secondes sur l'emplacement x " & X & " et y = " & Y & " !"
WriteConsole Hwnd, ByVal Texte, Len(Texte), I, 0&
I = GetTickCount
Do
Loop Until GetTickCount - I > 5000&
FreeConsole
Else
MsgBox "L'opération a échouée", vbCritical, Titre
End If
End Sub


ctac
0
Utilisateur anonyme
17 mars 2006 à 21:29
Salut,

En vb.net (vs2005)
Utilise CursorLeft et CursorTop
Une petite fonction d'example:

Sub Main()
Call Write("héhéhé", 20, 8)
End Sub

Private Sub Write(ByVal Str As String, ByVal Col As Integer, ByVal Row As Integer)
Dim tmpCol As Integer = Console.CursorLeft
Dim tmpRow As Integer = Console.CursorTop
Console.CursorLeft = Col
Console.CursorTop = Row
Console.Out.Write(Str)
Console.CursorLeft = tmpCol
Console.CursorTop = tmpRow
End Sub

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
Utilisateur anonyme
17 mars 2006 à 21:38
Et même, si tu veut aussi ajouter la couleur, c'est le même principe:

Sub Main()
Call Write("héhéhé", 20, 8, ConsoleColor.Yellow, ConsoleColor.DarkRed)
End Sub

Private Sub Write(ByVal Str As String, ByVal Col As Integer, ByVal Row As Integer, _
ByVal ForeColor As System.ConsoleColor, ByVal BackColor As System.ConsoleColor)
Dim tmpCol As Integer = System.Console.CursorLeft
Dim tmpRow As Integer = System.Console.CursorTop
Dim tmpForeColor As System.ConsoleColor = System.Console.ForegroundColor
Dim tmpBackColor As System.ConsoleColor = System.Console.BackgroundColor
System.Console.CursorLeft = Col
System.Console.CursorTop = Row
System.Console.ForegroundColor = ForeColor
System.Console.BackgroundColor = BackColor

System.Console.Out.Write(Str)

System.Console.CursorLeft = tmpCol
System.Console.CursorTop = tmpRow
System.Console.ForegroundColor = tmpForeColor
System.Console.BackgroundColor = tmpBackColor
End Sub

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
18 mars 2006 à 13:03
Merci pour vos réponses

J'avais déja demandé en C# et j'ai eu la solution (Frameworks1.1)
Par contre, comment faire pour récupérer la position du curseur ?

-- Pourquoi faire simple quand on peut faire compliquer --
0

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

Posez votre question
Utilisateur anonyme
18 mars 2006 à 13:51
Tout simplement avec CursorLeft et CursorTop

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
20 mars 2006 à 07:54
lol j'ai bien précisé Frameworks 1.1
Mais c'est pas grave j'ai trouvé avec la msdn C#

Merci quand même

-- Pourquoi faire simple quand on peut faire compliquer --
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
19 janv. 2007 à 18:50
super ! juste ce que je cherchais !!!
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
22 janv. 2007 à 12:02
lol si ça peut aider

-- Pourquoi faire simple quand on peut faire compliquer --
0
Rejoignez-nous