用VB实现“一键上网”

常见到联想等品牌机键盘上有很多功能键,可以打开浏览器、字处理等程序,非常方便。那么,兼容机的键盘能实现这些功能吗?当然可以!我们可以通过VB编程,利用小键盘上不常用的键(如“*”、“+”等)实现“一键上网”甚至“一键星际”。
   大家都知道,在VB中窗体的KeyPreview属性可以对键盘进行控制,但前提是窗体必须具有焦点,也就是在当前窗体下才可以这么做。当窗体不具有焦点时,我们只有设置一个Keyboard Hook来拦截键入的键,从而引发其他程序的运行,下面,我在VB中利用SetWindowsHookEx()函数来实现在窗口不具有焦点时,对键盘的控制,实现“一键上网”。
   '以下程序是在Module1.bas内
   Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long,ByVal lpfn As Long,ByVal hmod As Long,ByVal dwThreadId As Long)As Long
   'idHook参数代表拦截的类型,主要有键盘、鼠标等(当拦截键盘输入时值为2)
   'lpfn参数代表Hook函数的位址
   'hmod代表.dll的hInstance
   'dwThreadId代表执行拦截的ThreadId
   Declare Function UnhookWindowsHookEx Lib"user32"(ByVal hHook As Long)As Long
   Declare Function CallNextHookEx Lib"user32"(ByVal hHook As Long,ByVal ncode As Long,ByVal wParam As Long,lParam As Any) As Long
   Public Const WH_KEYBOARD = 2
   Public hHook As Long
   Sub EnableHook() '定义EnableHook
   '设置拦截
   hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyFunc, App.hInstance, 0)
   End Sub
   Sub DisableHook() '定义DisableHook
   Dim ret As Long
   ret = UnhookWindowsHookEx(hHook) '取消拦截
   End Sub
   Function Myfunc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 'wParam代表按键
   If wParam=vbKeyAdd Then '判断按键是否为小键盘上的“+”
   shell "c:\progra~1\intern~1\iexplore.exe", vbNormalFocus '执行文件
   Myfunc=1
   Exit Function '退出函数,避免循环
   End if
   Myfunc=CallNextHookEx(hHook, ncode, wParam, lParam) '传到下一个拦截
   End Function
   '下面的程序是在Form内
   Private Sub Form_Load()
   Call EnableHook
   End Sub
   Private Sub Form_Unload(Cancel As Integer)
   Call DisableHook
   End Sub
   Private Sub Form_Click()
   '让窗体不可见(也可以把Form1作为Splash屏幕)
   Form1.Visible = False
   End Sub
   程序的框架大概如此,有兴趣的朋友可以完善一下,增加功能键的个数,也可以开个对话框指定功能键和执行的程序,但不要太贪心喽!程序在Windows Me/VB 5.0环境下运行通过。