请问这个windows console 控制台效果怎么实现?

AKULAKK 2007-10-26 12:04:01
windows console命令模式俗称dos模式

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

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

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

请赐教!感激万分.
...全文
197 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanlai123 2007-10-26
  • 打赏
  • 举报
回复
学习
Yangbin990 2007-10-26
  • 打赏
  • 举报
回复
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 dwCursorPosition As COORD) As Integer

' Subroutine used to clear the Console screen.
Public Sub Clear()
Dim hConsoleHandle As IntPtr
Dim hWrittenChars As IntPtr
Dim strConsoleInfo As CONSOLE_SCREEN_BUFFER_INFO
Dim strOriginalLocation As COORD
hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE) ' Get Handle for standard output
GetConsoleScreenBufferInfo(hConsoleHandle, strConsoleInfo) ' Get information about the standard output buffer of the Console
FillConsoleOutputCharacter(hConsoleHandle, EMPTY, strConsoleInfo.dwSize.X * strConsoleInfo.dwSize.Y, strOriginalLocation, hWrittenChars) ' Fill output buffer with Empty characters (ASCII 32)
SetConsoleCursorPosition(hConsoleHandle, strOriginalLocation) ' Set the Console cursor back to the origin
End Sub

End Class
ojekleen 2007-10-26
  • 打赏
  • 举报
回复
mark

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧