网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.VB中如何实现注册表的读写.
.在VB中控制Word.
.解除网虫心病VB做定时断线程序.
.SMTP协议简介(SimpleMailTransf.
.用VB实现聊天讨论室和点对点会话.
.基于Win95的VB5串口通信程序.
.使用Cleanup方法避免循环引用.
.关于VisualBasic6.0类开发.
.快速设定Form上所有控制项的TabI.
.在VB5中如何使机箱内的小喇叭发出.
.即时即战游戏的写法.
.让用户自行输入方程式,并计算其.
.VisualBasic命令分类表.
.VB从零开始编外挂(十).
.静态变量慢于动态变量.
.透明的窗体(From)上显示背景透通.
.FSO对象模型在VB中的应用.
.用CELL组件显示Access数据库的图.
.应用VB4.0实现工业控制的实时曲线.
.用VB6读写数据库中的图片.

用API函数定义热键又一法

发表日期:2006-2-27


土人的拙作《如何用API函数定义热键》在VB编程乐园发表后,很多网友纷纷来信,有的指出其中存在的问题并提出解决方的案(土人在此表示感谢!);有的则询问可不可以定义组合键等问题。土人不才,通过多方查找资料,才找到另一种定义热键的方法,在此把心得写出来,请各位网友指正!
三个API函数是必须的:
RegisterHotKey——用于定义热键
UnregisterHotKey——用于注销热键
PeekMessage——用于检测热键(尚有其它的主要用途)
这里举个实例:程序启动后窗体不可见,按下Ctrl F12窗体弹出来。本例仅需要一个窗体,在PWin98、VB6.0企业版下调试通过。

'申明API函数
PrivateDeclareFunctionRegisterHotKeyLib"user32"(ByValhWndAsLong,ByValidAsLong,ByValfsModifiersAsLong,ByValvkAsLong)AsLong
PrivateDeclareFunctionUnregisterHotKeyLib"user32"(ByValhWndAsLong,ByValidAsLong)AsLong
PrivateDeclareFunctionPeekMessageLib"user32"Alias"PeekMessageA"(lpMsgAsMsg,ByValhWndAsLong,ByValwMsgFilterMinAsLong,ByValwMsgFilterMaxAsLong,ByValwRemoveMsgAsLong)AsLong

PrivatebCancelAsBoolean'用于热键有效与否的变量

'全局变量
PrivateConstMOD_ALT=&H1
PrivateConstMOD_CONTROL=&H2
PrivateConstMOD_SHIFT=&H4
PrivateConstPM_REMOVE=&H1
PrivateConstWM_HOTKEY=&H312

PrivateTypeMsg'定义Message类型
hWndAsLong
MessageAsLong
wParamAsLong
lParamAsLong
timeAsLong
EndType

PrivateSubproMsg()'声明进程
DimMessageAsMsg
'循环直到bCancel为真
DoWhileNotbCancel
'检测到热键被按下则令窗体隐藏
IfPeekMessage(Message,Me.hWnd,WM_HOTKEY,WM_HOTKEY,PM_REMOVE)Then
Me.Visible=True
EndIf
DoEvents
Loop
EndSub

PrivateSubForm_Load()'窗体加载时初始化程序
DimretAsLong
bCancel=False
'定义热键为Ctrl F12
ret=RegisterHotKey(Me.hWnd,&HBFFF&,MOD_CONTROL,vbKeyF12)
Me.Visible=False'窗体不可见
proMsg
EndSub

'退出时注销热键
PrivateSubForm_Unload(CancelAsInteger)
bCancel=True
CallUnregisterHotKey(Me.hWnd,&HBFFF&)
EndSub->

上一篇:如何快速导出数据库为EXCEL 人气:3619
下一篇:用Shell语句调出控制面板 人气:2735
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐