发信人: yingzi007()
整理人: winsy(2003-03-05 15:56:47), 站内信件
|
VB爱好者乐园
主力站点: http://www.d1vb.com
备用站点: http://vbvb.yes8.com
利用 热键操作实现一键通(VB类)
摘要 本文介绍了用热键拦截函数,制作"一键通"实现快速上网的方法。用 VB5. 0 编译并运行本文介绍的程序,可以通过按F2、F3、F4等功能键打开指定的网站 。
所用到的 API 函数 GetAsyncKeyState 、ShellExecute
一、概述
现在在市场上出现了一种为上网制作的专用键盘(这种键盘有几个特殊的按键, 通过按这些按键可以打开相关的网站,极大的方便了我们这些网虫,大可不必记 住那么多的网址),大家是不是非常想得到这样的键盘,好的,大家向下看,以 编程的方式可以使用每一个网虫的键盘拥有这样的功能。
二、这个程序的基本思路
其时这种功能在 VB 中是非常容易就能实现的,只要通过热键拦截函数得到用户 的按键,在调用ShellExecute 函数打开相应的网址就行了。
(1)通过修改注册表(或其他方式)使这个程序开机就能运行,既时监视用户的 按键情况。
(2)把程序最小化到任务栏(可以通过 API 函数 Shell_NotifyIcon 或相关的 控件实现)。
(3)监视按键,打开相应的网址。
(4)其他方面。(比较好的程序界面,增加数据库功能,实现热键网址增加、删 除、修改等功能,还有其他个性化的设置等等吧)
由于(1),(2)部分的文章已经比较多了,(4)部分就由大家自己发挥了,因 此在下面的例子里我只是介绍第(3)部分的实现方法。
三、程序示例
下面给出一个实例,它是用 VB 5.0 编制而成的。本程序可以检测用户的按键, 如果按键是F2,F3,F4,则打开对应文本框的内容。具体程序代码如下:
1.如图所示,建立基于对框的应用程序,标题为"一键通",装载 3 个 TextBox 控件,Text 属性分别为:"http://sina.com.cn","http://www.163.com"," http://www.21cn.com";3 个 Label 控件,Caption 属性分别为:"F2","F3" ,"F4";1 个 Timer 控件。
2.首先声明API 函数 GetAsyncKeyState、ShellExecute 及程序所需要的各变量
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer
注释:判断函数调用时指定虚拟键的状态
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellEx ecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
注释: 查找与指定文件关联在一起的程序的文件名
Dim Web
Dim HyperJump
3、定义相关函数
Function Http(Web) 注释:打开相应的网址
HyperJump = ShellExecute(0&, vbNullString, Web, vbNullString, vbNullSt ring, vbNormalFocus)
End Function
Private Function MyHotKey(vKeyCode) As Boolean 注释:热键
MyHotKey = (GetAsyncKeyState(vKeyCode) < 0)
End Function
4、其他
Private Sub Form_Load()
Timer1.Interval = 1 注释:设置检测间隔时间
End Sub
Private Sub Timer1_Timer()
If MyHotKey(vbKeyF2) Then Http (Text1.Text) 注释:根据键值打开相应的 网址
If MyHotKey(vbKeyF3) Then Http (Text2.Text)
If MyHotKey(vbKeyF4) Then Http (Text3.Text)
End Sub
程序完成,本程序用 VB5.0 编译通过,在中文 Windows98 环境下运行良好 。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.110.173.200]
|
|