日期:2014-05-18  浏览次数:20763 次

请问这个windows console 控制台效果怎么实现?
windows console命令模式俗称dos模式 

那么 我曾经看到一种在dos模式下运行的服务器窗口,运行中的时候,提示信息末尾有个提示符按照 [\] - >[ ¦] - >[/] - >[-] 依次变换,进而形成转动的"动画"...  

相信各位看到过吧? 试问这种"特效"是怎么实现的呢? 

第二个问题是,在dos模式下运行的.Net程序,怎么像CS(反恐精英)服务器那样持续捕捉用户的输入呢? 
好比一个服务器在运行,我直接输入 show user (回车) 直接可以看到查询结果...酱紫. 

请赐教!感激万分.  


------解决方案--------------------
Imports System.Threading.Thread
Module Module1
Dim ClearMyConsole As New ClearConsole
Sub Main()
Dim prgThread As New Threading.Thread(AddressOf Progress)
prgThread.Start()
Console.ReadLine()
End Sub

Public Sub Progress()
While True
'\] - >[ ¦] - >[/] - >[-] 
Console.Write("\")
CurrentThread.Sleep(200)
ClearMyConsole.Clear()
Console.Write("¦")
CurrentThread.Sleep(200)
ClearMyConsole.Clear()
Console.Write("/")
CurrentThread.Sleep(200)
ClearMyConsole.Clear()
Console.Write("-")
CurrentThread.Sleep(200)
ClearMyConsole.Clear()
End While
End Sub
End Module
-------------------------
This part below is from http://support.microsoft.com/default.aspx?scid=kb;en-us;319239
'How to clear the Console window with Visual Basic .NET or Visual Basic 2005
'Add to a class
Imports System.Runtime.InteropServices

Public Class ClearConsole

Private Const STD_OUTPUT_HANDLE As Integer = &HFFFFFFF5
Private Const EMPTY As Byte = 32

' Structure defines the coordinates of a character cell in a console screen buffer. 
' The origin of the coordinate system (0,0) is at the top-left cell of the buffer.
<StructLayout(LayoutKind.Sequential)> _
Structure COORD
Dim X As Short
Dim Y As Short
End Structure

' Structure defines the coordinates of the upper-left and lower-right corners of a rectangle
<StructLayout(LayoutKind.Sequential)> _
Structure SMALL_RECT
Dim Left As Short
Dim Top As Short
Dim Right As Short
Dim Bottom As Short
End Structure

' Structure containing information about the Console's screen buffer.
<StructLayout(LayoutKind.Sequential)> _
Structure CONSOLE_SCREEN_BUFFER_INFO
Dim dwSize As COORD
Dim dwCursorPosition As COORD
Dim wAttributes As Integer
Dim srWindow As SMALL_RECT
Dim dwMaximumWindowSize As COORD
End Structure

' Win32 API Function declarations.
Declare Auto Function GetStdHandle Lib "kernel32.dll" (ByVal nStdHandle As Integer) As IntPtr
Declare Auto Function FillConsoleOutputCharacter Lib "kernel32.dll" (ByVal hConsoleOutput As IntPtr, ByVal cCharacter As Byte, _
ByVal nLength As Integer, _
ByVal dwWriteCoord As COORD, _
ByRef lpNumberOfCharsWritten As IntPtr) As Integer
Declare Auto Function GetConsoleScreenBufferInfo Lib "kernel32.dll" (ByVal hConsoleOutput As IntPtr, _
ByRef lpConsoleScreenBufferInfo As CONSOLE_SCREEN_BUFFER_INFO) As Integer
Declare Auto Function SetConsoleCursorPosition Lib "kernel32.dll" (ByVal hConsoleOutput As IntPtr, ByVal