首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> VB >> 正文
Visual Basic编程常见问题及解答
来源:ChinaItLab 作者:佚名 时间:2007-4-4

  如何用VB建立快捷方式
  
  Private Declare Function fCreateShellLink Lib "STKIT432.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long
  Sub Command1_Click()
  Dim lReturn As Long
  ’添加到桌面
  lReturn = fCreateShellLink("..\..\Desktop", "Shortcut to Calculator", "c:\windows\calc.exe", "")
  ’添加到程序组
  lReturn = fCreateShellLink("", "Shortcut to Calculator", "c:\windows\calc.exe", "")
  ’添加到启动组
  lReturn = fCreateShellLink("\Startup", "Shortcut to Calculator", "c:\windows\calc.exe", "")
  End Sub
  
  如何让程序在 Windows 启动时自动执行?
  
  有以下二个方法:
  
  方法1: 直接将快捷方式放到启动群组中。
  
  方法2:
  
  在注册档 HKEY_LOCAL_MACHINE 中找到以下机码
  \Software\Microsoft\Windows\CurrentVersion\Run
  新增一个字串值,包括二个部份
  1. 名称部份:自己取名,可设定为 AP 名称。
  2. 资料部份:则是包含 ’全路径档案名称’ 及 ’执行参数’
  
  例如:
  Value Name = Notepad
  Value Data = c:\windows\notepad.exe
  
  在 TextBox 中如何限制只能输入数字?
  
  参考下列程序:
  
  Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii < 48 Or KeyAscii > 57 Then
  KeyAscii = 0
  End If
  End Sub
  
  我希望 TextBox 中能不接受某些特定字符,例如 ’@#$%",有没有简单一点的写法?
  
  方法有好几种, 以下列举二种:
  
  方法1: 可以使用 IF 或 Select Case 一个个判断, 但如果不接受的字符多时, 较麻烦!
  
  方法2: 将要剔除的字符统统放在一个字串中,只要一个 IF 判断即可 !! 如下:
  
  Private Sub Text1_KeyPress(KeyAscii As Integer)
  Dim sTemplate As String
  sTemplate = "!@#$%^&*()_+-=" ’用来存放不接受的字符
  If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then
  KeyAscii = 0
  End If
  End Sub
  
  如何让鼠标进入 TextBox 时自动选定 TextBox 中之整串文字?
  
  这个自动选定反白整串文字的动作,会使得输入的资料完全取代之前在 TextBox 中的所有字符。
  
  Private Sub Text1_GotFocus()
  Text1.SelStart = 0
  Text1.SelLength = Len(Text1)
  End Sub
  
  如何检查软盘驱动器里是否有软盘?
  
  使用:
  
  Dim Flag As Boolean
  Flag = Fun_FloppyDrive("A:")
  If Flag = False Then MsgBox "A:驱没有准备好,请将磁盘插入驱动器!", vbCritical
  
  ’-------------------------------
  ’函数:检查软驱中是否有盘的存在
  ’-------------------------------
  Private Function Fun_FloppyDrive(sDrive As String) As Boolean
  On Error Resume Next
  Fun_FloppyDrive = Dir(sDrive) <> ""
  End Function
  
  如何弹出和关闭光驱托盘?
  
  Option Explicit
  Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
  
  Private Sub Command1_Click()
  mciExecute "set cdaudio door open" ’弹出光驱
  Label2.Caption = "弹 出"
  End Sub
  
  Private Sub Command2_Click()
  Label2.Caption = "关 闭"
  mciExecute "set cdaudio door closed" ’合上光驱
  Unload Me
  End
  End Sub
  
  如何让你的程序在任务列表隐藏
  
  Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
  Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
  
  ’请你试试 Ctrl+Alt+Del 是不是你的程序隐藏了
  Private Sub Command1_Click()
  i = RegisterServiceProcess(GetCurrentProcessId, 1)
  End Sub
  
  如何用程序控制滑鼠游标 (Mouse Cursor) 到指定位置?
  
  以下这个例子,当 User 在 Text1 中按下 ’Enter’ 键后,滑鼠游标会自动移到 Command2 按钮上方
  
  请在声明区中加入以下声明:
  
  ’16 位版本: ( Sub 无传回值 )
  Declare Sub SetCursorPos Lib "User" (ByVal X As Integer, ByVal Y As Integer)
  
  ’32 位版本: ( Function 有传回值,Integer 改成 Long )
  Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
  
  ’在 Form1 中加入以下程序码:
  Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii = 13 Then
  x% = (Form1.Left + Command2.Left + Command2.Width / 2 + 60) / Screen.TwipsPerPixelX
  y% = (Form1.Top + Command2.Top + Command2.Height / 2 + 360) / Screen.TwipsPerPixelY
  SetCursorPos x%, y%
  End If
  End Sub
  
  如何用鼠标移动没有标题的 Form,或移动 Form 中的控制项?
  
  在声明区中放入以下声明:
  
  ’16 位版本: ( Sub 无返回值 )
  Private Declare Sub ReleaseCapture Lib "User" ()
  Private Declare Sub SendMessage Lib "User" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Long)
  
  ’32 位版本: ( Function 有返回值,Integer 改成 Long )
  Private Declare Function ReleaseCapture Lib "user32" () As Long
  Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  
  ’共用常数:
  Const WM_SYSCOMMAND = &H112
  Const SC_MOVE = &HF012
  
  ’若要移动 Form,程序码如下:
  Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Dim i As Long
  i = ReleaseCapture
  i = SendMessage(Form1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0)
  End Sub
  
  ’以上功能也适用于用鼠标在 Form 中移动控制项,程序码如下:
  Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Dim i As Long
  i = ReleaseCapture
  i = SendMessage(Command1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0)
  End Sub
  
  检查文件是否存在?
  
  Function FileExists(filename As String) As Integer
  Dim i As Integer
  On Error Resume Next
  i = Len(Dir$(filename))
  If Err Or i = 0 Then FileExists = False Else FileExists = True
  End Function
  
  如何设置对VB数据库连接的动态路径
  
  我个人因为经常作一些数据库方面的程序,对于程序间如何与数据库进行接口的问题之烦是深有体会,因为VB在数据库链接的时候,一般是静态,即数据库存放的路径是固定的,如用VB的DATA,adodc,DataEnvironment 等到作数据库链接时,如果存放数据库的路径被改变的话,就会找不到路经,真是一个特别烦的事。
  
  笔者的解决方法是利用app.path 来解决这个问题。
  
  一、用data控件进行数据库链接,可以这样:
  
  在form_load()过程中放入:
  
  private form_load()
  Dim str As String ’定义
  str = App.Path
  If Right(str, 1) <> "\" Then
  str = str + "\"
  End If
  data1.databasename=str & "\数据库名"
  data1.recordsource="数据表名"
  data1.refresh
  sub end
  
  这几句话的意为,打开当前程序运行的目录下的数据库,你只要保证你的数据库在你程序所在的目录之下就行了。
  
  二、利用adodc(ADO Data Control)进行数据库链接:
  
  private form_load ()
  Dim str As String ’定义
  str = App.Path
  If Right(str, 1) <> "\" Then
  str = str + "\"
  End If
  str = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & str & "\tsl.mdb"
  Adodc1.ConnectionString = str
  Adodc1.CommandType = adCmdText
  Adodc1.RecordSource = "select * from table3"
  Adodc1.Refresh
  end sub
  
  三、利用DataEnvironment进行数据库链接
  
  可在过程中放入:
  
  On Error Resume Next
  If DataEnvironment1.rsCommand1.State <> adStateClosed Then
  DataEnvironment1.rsCommand1.Close ’

 

[1] [2] 下一页

【责编:landss】
中国IT教育热线咨询
相关文章
Visual Basic构建线程安全的Singleton…
Java中消除实现继承和面向接口编程
编程软件系列之C++编程技巧
VB.NET中的多窗体编程:升级到 .NET…
解析VB的事件驱动编程
C#和Visual Basic中的闭包与对象生存时期…
用纯JAVA语言编程读取MAC地址的实现
VC++与MATLAB混合编程及其应用
教你如何用Visual Basic编写病毒…
在VB.NET编程中使用数组
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05