cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 2014
-
17 mars 2006 à 11:58
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 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 --
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
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.
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.