软件注册站
热情软件屋

 
在vb中如何写命令行程序
编号: QA004612    
建立日期: 2002年4月2日 最后修改日期: 2002年12月22日
所属类别: Visual Basic - 其他方面
   
    操作系统: win xp
    编程工具: visual basic
    问题: 请问在vb中如何写命令行程序,就是能在DOS窗口下显示文本的,就像qbasic写的print语句,vb好像只能在windows的窗口下写文本。谢谢!
    水平: 中级(linjian)
   
    VB本身不支持控制台程序(Console application)。一个简单的方法使用API函数AllocConsole,下面是例子:
    1. 使用Notepad建立如下内容
     DIR /W
    并保存为C:\TEST.BAT
    2. 在Visual Basic中,建立一个新工程,其中包括一个窗体和模块。
    3. 在模块中输入以下API声明:
     Option Explicit
    
     Declare Function AllocConsole Lib "kernel32" () As Long
     Declare Function FreeConsole Lib "kernel32" () As Long
     Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) _
     As Long
     Declare Function GetStdHandle Lib "kernel32" (ByVal _
     nStdHandle As Long) As Long
     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
    
     Public Const STD_OUTPUT_HANDLE = -11&
    

    4. 在窗体上添加一个按钮并输入如下代码:
     Dim hConsole As Long
    
     Private Sub Command1_Click()
     Dim Result As Long, sOut As String, cWritten As Long
     sOut = "Hi There" & vbCrLf
     Result = WriteConsole(hConsole, ByVal sOut, Len(sOut), cWritten, _
     ByVal 0&)
     Shell "C:\TEST.BAT"
     End Sub
    
     Private Sub Form_Load()
     If AllocConsole() Then
     hConsole = GetStdHandle(STD_OUTPUT_HANDLE)
     If hConsole = 0 Then MsgBox "Couldn't allocate STDOUT"
     Else
     MsgBox "Couldn't allocate console"
     End If
     End Sub
    
     Private Sub Form_Unload(Cancel As Integer)
     CloseHandle hConsole
     FreeConsole
     End Sub
    

    5. 运行程序,将显示一个空白的DOS窗口。
    6. 点击按钮。sOut中字符串和批文件的内容都显示在DOS窗口中。
    7. 关闭窗体。DOS窗口也将关闭。
    这样虽然可以建立DOS窗口并显示内容,不过这个程序并不是一个真正的控制台程序。要实现真正的控制台程序稍微复杂一些,请参考http://www.devx.com/premier/mgznarch/vbpj/1998/03mar98/bb0398.pdf。不过该文提供的MkConsole函数只能在英文版本的Windows下正确运行,在中文系统下你需要对MkConsole工程进行修改。
    
    武安的意见:
    用以下语句也可:
    open "c:\test.bat" for output as #1
    print #1“t1 ” //t1表示你要写的第一命令行
    print #1,“t2 ”//有几条命令写几个print
    ;
    ;
    close #1
    p=shell "c:\test.bat"
    

    Magi注:这里是写一个批处理文件,并不是一个真正的控制台程序。

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 其他方面,

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio