科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件vb高手搜集-常见问题总结(2)

vb高手搜集-常见问题总结(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

如何让程序在 Windows 启动时自动执行

作者:阳光宝宝 来源:soft6 2008年5月23日

关键字: 问题 常见 VB vb.net Windows

  • 评论
  • 分享微博
  • 分享邮件
如何让程序在 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

  如何制作透明的表单 (Form)

  请在声明区中放入以下声明:

  Const GWL_EXSTYLE = (-20)
  Const WS_EX_TRANSPARENT = &H20&
  Const SWP_FRAMECHANGED = &H20
  Const SWP_NOMOVE = &H2
  Const SWP_NOSIZE = &H1
  Const SWP_SHOWME = SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE
  Const HWND_NOTOPMOST = -2

  Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

  Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

  在 Form_Load 使用的范例如下:
Private Sub Form_Load()
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT
SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, SWP_SHOWME
Me.Refresh
End Sub


  如何把小图片填满 Form 成为背景图

  对于这个问题,我看过很多方法,有的方法很麻烦,要声明一大堆 Type,用一大堆的 API,但是有一个最笨但我认为最好的方法如下: (就好像拼磁砖一样,不用任何 API, 不必声明任何 Type)

  在 Form 中放一个 PictureBox,Picture 属性设定为某一张小图,AutoSize 属性性设定 True,完成的模组如下:
Sub PictureTile(Frm As Form, Pic As PictureBox)
Dim i As Integer
Dim t As Integer
Frm.AutoRedraw = True
Pic.BorderStyle = 0
For t = 0 To Frm.Height Step Pic.ScaleHeight
For i = 0 To Frm.Width Step Pic.ScaleWidth
Frm.PaintPicture Pic.Picture, i, t
Next i
Next t
End Sub


  PictureTile 这个模组共有二个参数,第一个是表单名称,第二个则是 PictureBox 的名称。以下为一应用实例:
Private Sub Form_Load()
PictureTile Me, Picture1
End Sub

  关闭指定的程序

  要做到像 Task Manager 一样,可以关闭指定的程序,方法如下:

  在声明区中放入以下声明:(16位 改成 win31 API)

  Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

  Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

  Public Const WM_CLOSE = &H10

  以下之范例示范如何关闭一个视窗标题 (Caption) 为 【小算盘】的程序:
Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, "小算盘")
Debug.Print winHwnd
If winHwnd <> 0 Then
RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&)
If RetVal = 0 Then
MsgBox "Error posting message."
End If
Else
MsgBox "并未开启小算盘程序."
End If


  如何隐藏及再显示鼠标

  很简单,只用到了一个 ShowCursor API,参数也很简单,只有一个 bShow,设定值如下:

  True:显示鼠标 / False:隐藏鼠标

  Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long

  如何从您的应程序中结束 Windows 重开机

  很多软件在 Setup 完之后都会自动关机重开机,以便让某些设定值可以生效,其实这个功能很简单,只要几行指令就可以做到了!

  关键就是要使用 ExitWindowsEx 这个 API,这个 API 只有二个参数,第一个参数是一个 Flag,目的是要告诉 Windows 要以什么方式关机,在下面的声明中会列出可用的 Flag 常数值,至于第二个参数则是一个保留值,只要设定成 0 就可以了。

  很重要的一点是:如果您想要让关机动作更顺利,记得要 Unload 您的程序!

  在声明区中 (Bas Module / Form Module) 加入以下声明:

  Public Const EWX_LOGOFF = 0 ''这四个常数值可以并用
  Public Const EWX_SHUTDOWN = 1
  Public Const EWX_REBOOT = 2
  Public Const EWX_FORCE = 4

  Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

  实例:如果您想强迫关机重开机,程序码如下:
ret = ExitWindowsEx(EWX_FORCE OR EWX_REBOOT, 0)

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章