| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5411 人关注过本帖
标题:VB创建控制台应用程序
只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏
 问题点数:0 回复次数:9 
VB创建控制台应用程序
源码:
VBConsole.rar (5.65 KB)

效果:
图片附件: 游客没有浏览图片的权限,请 登录注册


程序代码:
' 功能:为VB程序创建一个consolewindow。
Private Declare Function AllocConsole Lib "kernel32" () As Long

'功能:销毁为VB程序创建的consolewindow。
Private Declare Function FreeConsole Lib "kernel32" () As Long


' DOS程序有三个标准文件:标准输入文件(stdin),标准输出文件(stdout),标准错误文件(siderr)。与此类
'似,控制台程序窗口有三个句柄:
'  输入句柄(inputhandle)—指向控制台程序的输入缓冲区
'  输出句柄(outputhandle)、错误句柄(errorhandle)—指向控制台程序的屏幕输出缓冲区
'  在能够进行输入/输出操作之前,必须用GetstdHandle函数取得consolewindow的这三个句柄。
'功能:返回consolewindow的三个句柄之一。
Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

'nStdHandle参数说明:
Private Const INPUT_HANDLE = -10&  '返回inputhandle

Private Const OUTPUT_HANDLE = -11& '返回outputhandle

Private Const ERROR_HANDLE = -12&  '返回errorhandle

' consolewindow并获得其input/outputhandle后,就可以利用WriteConsole和ReadConsole进行输入/输出了。

'功能:   向控制台窗口输出字符串?
'说明:     hConsoleOutput—控制台的outputhandle?
'          lpBuffer—要输出的字符串?
'          nNumberOfCharsToWrite—要输出的字符串的长度?
'     lpNumberofCharsWritten—实际输出的字符串的长度,可置为vbNull。
'     lpReserved—保留,必须置为vbNul。
Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
                                                (ByVal hConsoleOutput As Long, _
                                                 lpBuffer As Any, _
                                                 ByVal nNumberOfCharsToWrite As Long, _
                                                 lpNumberOfCharsWritten As Long, _
                                                 lpReserved As Any) As Long


'功能: 从输入缓冲区输入字符串?
'    说明:此函数是以块方式输入信息。在本文的示例中,只有用户按了Enter(回车)键后,此函数才返回。
'      hConsoleInput—consolewindow的inputhandle?
'      lpBuffer—输入缓冲区地址?
'      nNumberOfCharsToRead—输入缓冲区的长度?
'    lpNumberOfCharsRead—实际读入的字符数,可置为vbNull。
'    lpReserved—保留,必须置为vbNull。
Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" _
                                                (ByVal hConsoleInput As Long, _
                                                lpBuffer As Any, _
                                                ByVal nNumberOfCharsToRead As Long, _
                                                lpNumberOfCharsRead As Long, _
                                                lpReserved As Any) As Long


'功能:   设置控制台输入缓冲区的输人模式或屏幕输出缓冲区的输出模式?
'      说明:在用ReadConsole和WriteConsole函数行输入/输出前,要用此函数设置好输入/输出模式。
'        hConsoleHandle—consolewindow的Inputhandle或outputhandle
Private Declare Function SetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As Long, ByVal dwMode As Long) As Long

'dwMode是要设置的输入或输出模式值。hConsoleHandle是Inputhandle时,dwMode可取如下值的组合:

Private Const LINE_INPUT = &H2
Private Const ECHO_INPUT = &H4
Private Const MOUSE_INPUT = &H10
Private Const PROCESSED = &H1

Sub Main()
    Call AllocConsole
    Dim inputHandle As Long
    Dim str As String
    Dim outputHandle As Long
    str = "hello world" & vbCrLf
    outputHandle = GetStdHandle(OUTPUT_HANDLE)
    Call WriteConsole(outputHandle, ByVal str, Len(str), vbNull, vbNull)
    inputHandle = GetStdHandle(INPUT_HANDLE)
    Call ReadConsole(inputHandle, vbNull, 255, vbNull, vbNull)
    Call FreeConsole
End Sub


收到的鲜花
  • 永夜的极光2008-10-14 21:46 送鲜花  49朵   附言:不错的例子和解释
搜索更多相关主题的帖子: 应用程序 控制台 
2008-10-14 19:58
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 
支持一下

偶是菜鸟鸟偶惧WHO?!!!!
2008-10-14 20:12
我一定要坚持
Rank: 1
来 自:西方大雷音
等 级:新手上路
威 望:1
帖 子:159
专家分:0
注 册:2008-10-7
收藏
得分:0 
很抱歉,我是小小小小鸟.请问什么是控制台程序,可以用来做什么?谢谢...
2008-10-15 01:10
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
[bo][un]我一定要坚持[/un] 在 2008-10-15 01:10 的发言:[/bo]

很抱歉,我是小小小小鸟.请问什么是控制台程序,可以用来做什么?谢谢...

在有Windows之前,人们面对的是黑底白字的DOS。
2008-10-15 13:07
simpson
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:863
专家分:17
注 册:2006-11-16
收藏
得分:0 
[bo][un]multiple1902[/un] 在 2008-10-15 13:07 的发言:[/bo]


在有Windows之前,人们面对的是黑底白字的DOS。




直观的理解  就是这样   

实质不一样     你就要知道乌漆抹黑的窗口显示写白字的那种     呵呵

全国最大的 Java专业电子书免费分享[url]http:///in.asp?id=xrmao[/url]
2008-10-15 17:13
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
什么是控件台程序我不是创建出来给你看了么?

/images/2011/147787/2011051411021524.jpg" border="0" />
2008-10-15 18:06
LIANG5505
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-9-9
收藏
得分:0 
直接用VB2005呵呵
2008-10-15 20:45
我一定要坚持
Rank: 1
来 自:西方大雷音
等 级:新手上路
威 望:1
帖 子:159
专家分:0
注 册:2008-10-7
收藏
得分:0 
控制台应该程序与DOS的区别是?
2008-10-16 01:42
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
dos是16位的操作系统.
控件台则不是.

/images/2011/147787/2011051411021524.jpg" border="0" />
2008-10-24 16:34
周斌
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-10-19
收藏
得分:0 
没看懂什么意思啊?具体用处是什么啊?
2008-10-24 19:22
快速回复:VB创建控制台应用程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049937 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved