精通VB创建控制台的大虾救命

作者&投稿:刁怪 (若有异议请与网页底部的电邮联系)
求一个VB编程的菜鸟问题,精通此道的大虾救救!~

把.MoveFirst改成if not .bof then .movefirst
或者直接去掉.MoveFirst,因为打开记录集的时候,指针一般指向第一条记录的
如果记录集为空的时候使用.MoveFirst就会出错了。

在.MoveFirst之前加上如下判断语句。

if rs.eof and rs.bof then
msgbox("没有满足条件的记录.")
exit sub
end if

这个有难度阿。。。

用VB编写基于控制台的程序
设计思路
(1)分配控制台程序的内存资源。

(2)设置控制台的相关属性。

(3)通过控制台输出文本内容。

(4)接收交互信息并继续输出。

(5)释放控制台程序的内存并关闭程序。

实现步骤
(1)启动VB,新建一个工程,删除默认的“From1”窗体,然后添加一个模块,在该模块中输入常量和全局变量的定义代码。

注:API函数的声明可参照“本期API函数声明”:

'定义标准输入、输出和错误的句柄常量

Private Const STD_INPUT_HANDLE = -10&

Private Const STD_OUTPUT_HANDLE = -11&

Private Const STD_ERROR_HANDLE = -12&

'定义控制台程序文字属性常量

Private Const FOREGROUND_BLUE = &H1

Private Const FOREGROUND_GREEN = &H2

Private Const FOREGROUND_RED = &H4

Private Const FOREGROUND_INTEN

SITY = &H8

Private Const BACKGROUND_BLUE = &H10

Private Const BACKGROUND_GREEN = &H20

Private Const BACKGROUND_RED = &H40

Private Const BACKGROUND_INTEN

SITY = &H80

'定义控制台输入模式常量

Private Const ENABLE_LINE_INPUT = &H2

Private Const ENABLE_ECHO_INPUT = &H4

Private Const ENABLE_MOUSE_INPUT = &H10

Private Const ENABLE_PROCESSED_I

NPUT = &H1

Private Const ENABLE_WINDOW_INP

UT = &H8

'定义控制台输出模式常量

Private Const ENABLE_PROCESSED_OUTPUT = &H1

Private Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2

'定义控制台输入句柄变量

Private hConsoleIn As Long

'定义控制台输出句柄变量

Private hConsoleOut As Long

'定义控制台错误句柄变量

Private hConsoleErr As Long

(2)在模块中输入主程序和其他功能子程序、函数的代码:

'主程序

Private Sub Main()

'定义接收输入的字符型变量

Dim szUserName As String

'分配控制台程序的内存,完成设计思路(1),参考API函数声明①

AllocConsole

'设置窗体标题,参考API函数声明②

SetConsoleTitle "VB 控制台窗口"

'获得控制窗口的一系列句柄,参考API函数声明③,并到此完成设计思路(2)

hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)

hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)

hConsoleErr = GetStdHandle(STD_ERROR_HANDLE)

'设置控制台输出的文字属性,参考API函数声明④

SetConsoleTextAttribute hConsoleOut, FOREGROUND_RED Or FOREGROUND_GREEN Or FOREGROUND_BLUE Or FOREGROUND_INTENSITY Or BACKGROUND_GREEN

'输出文字,进行设计思路(3)

PrintConsole "VB Console Demo" & vbCrLf

SetConsoleTextAttribute hConsoleOut, FOR

EGROUND_RED Or FOREGROUND_GREEN Or FOREGROUND_BLUE

'输出提示用户输入的文字

PrintConsole "Please Enter User Name:"

'读取控制台的输入,即获取用户名

szUserName = ConsoleRead()

'按输入的情况输出不同的内容,进行设计思路(4)

If Not szUserName = vbNullString Then

'如输入的用户名正确(假设为“user”)

If szUserName = "user" Then

'输出输入正确的提示

PrintConsole "Welcome, " & szUserName & "!" & vbCrLf

Else

'输出用户名输入错误的警告

PrintConsole "Error!" & vbCrLf

End If

Else

'提示用户输入用户名

PrintConsole "Press Enter User Name!" & vbCrLf

End If

'提示用户按任意键关闭窗体

PrintConsole "Press Enter To Close The Demo"

Call ConsoleRead

'释放内存并关闭控制台程序,参考API函数声明⑤,进行设计思路(5)

FreeConsole

End Sub

'向控制台输出内容的子程序

Private Sub PrintConsole(szOut As String)

WriteConsole hConsoleOut, szOut, Len(szOut), vbNull, vbNull '参考API函数声明⑥

End Sub

'读取控制台输入内容的函数

Private Function ConsoleRead() As String

Dim szUserInput As String * 256

Call ReadConsole(hConsoleIn, szUserInput, Len(szUserInput), vbNull, vbNull) '参考API函数声明⑦

'去除空字符和回车符

ConsoleRead = Left$(szUserInput, InStr(szUserInput, Chr$(0)) - 3)

End Function

注:本期例子在Windows2000和VB6环境中试验通过。

相关API函数声明
①AllocConsole
说明:分配控制台窗口所需的内存。

返回值:Long型。

VB声明:Private Declare Function AllocConsole Lib "kernel32" () As Long

②SetConsoleTitle
说明:设置控制台窗体的标题。

返回值:Long型。

参数:

lpConsoleTitle:String型,代表待设置的控制台窗体标题内容。

VB声明:Private Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long

③GetStdHandle
说明:获取控制台程序的句柄。

返回值:Long型。

参数:

nStdHandle:Long型,代表需要获取句柄的窗口。

VB声明:Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

④SetConsoleTextAttribute
说明:设置控制台文字的属性。

返回值:Long型。

参数:

hConsoleOutput:Long型,代表待输出内容的控制台窗口句柄。

wAttributes:Long型,代表输出的文字属性。

VB声明:Private Declare Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long

⑤FreeConsole
说明:释放控制台窗口占用的内存。

返回值:Long型。

VB声明:Private Declare Function FreeConsole Lib "kernel32" () As Long

⑥WriteConsole
说明:向控制台输出内容。

返回值:Long型。

参数:

hConsoleOutput:Long型,代表待输出内容的控制台窗口句柄。

lpBuffer:Any型,代表存放输出内容的缓冲区域。

nNumberOfCharsToWrite:Long型,代表输出内容的长度。

lpNumberOfCharsWritten:Long型,代表实际输出的内容长度。

lpReserved:Any型,该参数保留,暂不使用。

VB声明:Private Declare Function WriteConsole Lib "kernel32" Alias "Write

ConsoleA" (ByVal hConsoleOutput As Long, ByVal lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long

⑦ReadConsole
说明:读取控制台输入的内容。

返回值:Long型。

参数:

hConsoleInput:Long型,代表待接收输入内容的控制台窗口句柄。

lpBuffer:String型,代表接收输入内容的缓冲区域。

nNumberOfCharsToRead:Long型,代表接收的输入内容长度。

lpNumberOfCharsRead:Long型,代表实际接收的输入内容长度。

lpReserved:Any型,该参数保留,暂不使用。

VB声明:Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, lpReserved As Any) As Long

什么啊,你们回答的这些人有没有自己写过啊!!

真的是不负责任!!!!

我明确的告诉楼主,你要的效果是完全能够用vb实现的。

我现在就会,如果想知道怎么做得话给我发短消息,真的是看不惯这些没事就乱贴的人!

连人家的具体要求都没有看清楚就乱贴一通~~~

真的是服了你们了~~~~~

JAVA:System.Out.Println(string)
C#: Console.WriteLine();
ASP.NET Response.WriteLine()
.......
看是什么语言了
您好,在C#控制台应用程序中,您可以使用Console.Clear();方法清除控制台窗口的输出。

例如:

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hahahaha");
Console.WriteLine("123123");
Console.WriteLine("hahah5445");
Console.ReadKey();
Console.Clear();
Console.ReadKey();
}
}
}

程序运行后按任意键就可以清除屏幕显示。

1楼的 说得很完整..看来我没必要再说了

好在


vb编程教程(从入门到精通)
VB提供了一个集成开发环境(IDE),即Visual Basic for Applications(VBA)编辑器,你可以在其中编写和运行代码。首先,你需要熟悉VBA编辑器的界面和各个部分的功能。然后,你可以从简单的程序开始,如打印“Hello, World!”到控制台,逐步掌握VB编程的基础知识。二、进阶篇:掌握VB编程技能 在...

vb问题求助
不是叫控制台。控制台就是命令行窗口。其实就是Windows下的虚拟Dos。和你说的不是一个东西。想操作其他的Windows应用程序,只能使用API了。一般要得到要操作的窗体的句柄(Handle),再通过这个窗体的句柄,找他所有子窗口(其实是控件)的句柄。然后发送对应的Windows消息。给你写一下要用到的API:Find...

vb从入门到精通(深入浅出,轻松掌握vb编程)
安装VB 首先,我们需要下载和安装VB。可以在官方网站上下载VB的最新版本。安装完成后,启动VB。创建新项目 在VB中,我们可以创建多种类型的项目,如Windows应用程序、Web应用程序、控制台应用程序等。在新建项目时,可以选择所需的项目类型。设计用户界面 VB提供了丰富的用户界面设计工具,让我们可以轻松地...

如何用VB控制台编程(打印输出100-999之间的水仙花数)
' VB .NET 控制台应用 Module Module1 Sub Main()Dim i, a, b, c As Integer i = 100 Do While i <= 999 a = i \\ 100 b = i \\ 10 Mod 10 c = i Mod 10 If a ^ 3 + b ^ 3 + c ^ 3 = i Then Console.WriteLine(i) '控制台输出部分,可以修改成其他形式输出 End ...

如何用VB控制台编程(打印输出100-999之间的水仙花数)
Private Sub Command1_Click()For i = 100 To 999 If IsPrime(i) Then n = n + 1 Print i;If n Mod 10 = 0 Then Print End If Next i End Sub Public Function IsPrime(ByVal num As Long) As Boolean Dim m As Long m = Sqr(num)IsPrime = True For i = 2 To m If num ...

CreateFileVB声明
在Windows编程中,CreateFileVB函数是一个非常重要的功能,它使用kernel32库中的CreateFileA方法,用于打开或创建多种对象,包括控制台、通信资源、目录、磁盘驱动器、文件、邮槽和管道。这个函数的原型如下:FUNCTION CreateFile(_In_ LPCTSTR lpFileName,_In_ DWORD dwDesiredAccess,_In_ DWORD dwShareMode...

VB.Net编程入门之Hello World(4)
( ) 在【位置】的文本框中输入【E:\\VS NET项目】 然后单击【确定】按钮 则Visual Studio Net会按照上面设定的参数创建一个控制台应用程序项目 ( ) 在【解决方案资源管理器】窗口中 双击Module vb文件 进入Module vb文件的编辑界面 ( ) Visual Studio Net已经为产生Main()函数 在系统创建的Main...

如何使用VB的控制台应用程序编写一个倒直角三角形的乘法口诀表?_百度...
添加一个模块,模块里写:Sub Main()Dim i As Integer, j As Integer, x As String Form1.Show Form1.Cls Form1.AutoRedraw = True Form1.Caption = "乘法口诀表"For i = 1 To 9 For j = 1 To i x = j & "×" & i & "=" & i * j Form1.Print x; Space(7 - Len(x...

vb.net控制台窗口如何显示
新建工程时选择 新建控制台程序。窗体程序不行,窗体程序可以使用msgbox 输出结果。

VB控制台,怎么做1到200 所有偶数的和,我这样做哪里错 了
Dim sum As Integer = 0 For i = 1 To 20 If i Mod 2 = 0 Then sum = sum + i End If Next 去掉If里面的 i = i + 1,这样就完全正确了。ps: vb.net

安阳县15511051730: vb 怎么写控制台程序 -
谭朱返魂: vb.net有控制台程序选择项, 新建--项目--已安装--模板-Visual Basic--windows, 然后在右边的窗口中选择“控制台应用程序”.

安阳县15511051730: VB.NET控制台 -
谭朱返魂: 就是这样的老兄,显示完就是闪一下,不会等你看的.程序流程本来就是这样嘛.一般要看的话,都是在下面加一句:console.read() 这样等到你按回车,才会结束 .

安阳县15511051730: vb.net 模式窗口 -
谭朱返魂: 在工具箱里面拉,什么openfiledialog,savefiledialog,fontdialog,printdialog啦,都有.

安阳县15511051730: VB.net里面 console是什么意思 怎么用? -
谭朱返魂: 在visual studio.net中,你新建一个控制台程程序 然后里面 给你 一个 程序 你粘贴复制 就知道了 呵呵 Module Module1Sub Main()Dim x As String, y As Byte '定义变量及其数据类型x = "007" '为变量x赋初值y = Convert.ToByte(x) '将字符串型数据转换成字节型值并赋值给变量yConsole.WriteLine("字符串型变量 x(" & x & ") 被转换成了" & "字节型变量 y(" & y & ") .

安阳县15511051730: vb.net控制台程序清屏的语句 -
谭朱返魂: 12345678 SubMain() Console.WriteLine("one") Console.WriteLine("two") Console.Clear() '清屏 Console.WriteLine("three") Console.ReadKey()EndSub

安阳县15511051730: VB.net的弹出窗口问题 -
谭朱返魂: Me.IsMdiContainer = True Dim f As New Form2 f.MdiParent = Me f.Show()

安阳县15511051730: 求用VB,Net编写1 - 1000的素数.控制台的,
谭朱返魂: Dim i As Integer, j As Integer For i = 1 To 1000 For j = 2 To Math.Sqrt (i) If i Mod j = 0 Then Exit For Next j If i > Math.Sqrt (i) Then MsgBox (i.ToString() & "是素数.") Next i End Sub

安阳县15511051730: 用VB控制台应用程序编写一元二次方程 -
谭朱返魂: 请把问题说完整一些…… 如果只是要一元二次方程的结果 那么 比如 需要 X^2+x+5 的结果,那么 这么做 加一个 text 加一个command 输入如下代码 Private Sub Command1_Click() Dim x As Integer x = Val(Text1.Text) MsgBox x * x + x + 5 End Sub 然后在 text1中输入 数字 点 command1 就算出来了

安阳县15511051730: 如何使用VB的控制台应用程序编写一个倒直角三角形的乘法口诀表?
谭朱返魂: 添加一个模块,模块里写: Sub Main() Dim i As Integer, j As Integer, x As String Form1.Show Form1.Cls Form1.AutoRedraw = True Form1.Caption = "乘法口诀表" For i = 1 To 9 For j = 1 To i x = j &amp; "*" &amp; i &amp; "=" &amp; i * j ...

安阳县15511051730: vb设计怎样在点击命令按钮后在文本框中输出结果 -
谭朱返魂: 1. 假如单击按钮时候,在文本框1中显示“hello world”字样,则在命令按钮中写上: text1.text="hello world"2. 在命令按钮单击事件里面粘贴: text3.text=val(text1.text)+val(text2.text)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网