当前位置: 网学 > 编程文档 > VB > 正文

“一键功能”的设计、实现与应用

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式

一、引言
在Windows桌面上创建快捷方式的应用程序,可以通过设置它的属性来实现一键调用该程序的功能(即“一键功能”),可是,如果每个常用程序都通过创建快捷方式来实现“一键功能”,则桌面上将显得杂乱无章; 怎样才能既不为应用程序创建快捷方式,又能实现“一键功能”呢?下面介绍用vb编程实现“一键功能”的方法及其应用。

二、编程原理

在API函数中有一个GetAsyncKeyState函数,功能是判断函数调用时指定虚拟键的状态,即调用该函数时,可以检测到用户想检测的键是否被按下该函数的声明如下:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
参数vKey表示想检测键的扫描代码,该扫描代码由vbKey和键面字符组成,例如F1、F2、F3、A的扫描代码分别为vbKeyF1、vbKeyF2、vbKeyF3、vbKeyA。如果用户按下指定的键,函数的返回值为小于0的整数,否则返回大于或等于0的整数。因此,可以根据返回值是否小于0,检测是否按下指定的键。该函数还有一个非常好的特点,那就是无论调用它的程序是在前台还是在后台运行,它都能够检测键盘上某一键是否被按下(即一旦调该函数,它在整个系统范围内都有效)。利用这个特点,我们便可以为某一个功能键定义一个应用程序,然后再用计时器实时检测该键状态,当该键被按下时调用该应用程序,从而实现“一键功能”。

三、应用编程

利用上述原理进行以下两个方面的应用:1、一键调用编程实现的特定功能(过程的功能);2、一键调用安装在Windows下的应用程序
对于第一方面的应用,主要是编写一些特定功能的过程,如关机、重新启动、打开光驱、关闭光驱,锁定屏幕。它的编程思路是(这些功能都是简单地调用API函数实现的,这里不再叙述): 程序运行时,首先检测是否为这些功能定义了快捷键(保存在FunctionKey.txt文件中),如果没有定义,则显示如图所示的界面,让用户定义快捷键并保存。如果已经定义,则把它们读到与特定功能的函数相对应的数组元素中,并显示在应用程序界面的相应位置。如果此时你按下了某个已经定义的功能键,当GetAsyncKeyState函数检测到后,便立即执行相应的过程。
对于第二方面的应用,主要是让用户为自己常用的应用程序定义快捷键(可以任意定义功能键和应用程序),从而可以方便快捷地打开它。它的编程思路与第一种相同,所不同的是,在CustomKey.txt文件中保存的是快捷键和与之相对应的应用程序文件名(包括路径),当读文件时,是把快捷键和应用程序文件名分别读到不同的数组元素中。
好啦,下面让我们动手实践一下。启动VB并新建一个名为AkeyFunction工程,窗体文件名也为AkeyFunction,然后在窗体上添加以下控件: 两个框架、六个下拉组合框、五个命令按钮、八个标签、一个列表框、一个计时器、一个通用对话框,界面设计如图1所示(运行时计时器和通用对话框不可见)。修改窗体的名称为“一键功能”,BorderStyle为1,ControlBox为False,Visible为False,KeyPreview为True; 两个框架的Caption分别为“特定功能区”、“自定义功能区”; 六个下拉组合框为一个数组,名称为cmbChooseKey,Text都为空; 五个命令按钮的名称依次为cmdAdd、cmdDel、cmdOk、cmdCancel、cmdApply,Caption依次为“添加…”、“删除”、“确定”、“取消”、“应用”; 八个标签的Caption依次为“提示: 当程序运行时,按F12显示该界面”、“快捷键”、“特定功能”、“关机”、“重新启动”、“锁定屏幕”、“打开光驱”、“关闭光驱”; 计时器的Interval为200; 通用对话框的名称cmnAdd; 其他属性使用缺省值。
下面是完整的源程序代码:
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const WM_SYSCOMMAND = &H112&
C

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号