说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

按下某组键(HotKey)便执行某程式-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
按下某组键(HotKey)便执行某程式-VB资料

在Dos的年代,我们常会以拦截中断向量的方式,做到按下某个hotkey而自动执行某个程式,在Window呢,也可以,不过它是用RegisterHotkey API来完成。

使用RegisterHotkey的概念是,它会定义一组按键的组合,当使用者不管在哪个程式之中,按下Window有注册的HotKey时,OS会传送WM_HOTKEY 的讯息给待接收该讯息的Window,而该Window收到WM_HOTKEY时,便可知道有本身Thread所定义的HotKey被按下,於是可以从wParam, lParam来得知是哪一组HotKey被按下。

RegisterHotKey(
ByVal hwnd As Long , //接收Hotkey的Window
ByVal idHotKey as Long, // identifier of hot key,range 0x0000 through 0xBFFF
ByVal Modifiers As Long, // 定义alt shift control等的组合
ByVal uVirtKey As Long // virtual-key code
)

WM_HOTKEY 叁数的定义
idHotKey = wParam; // identifier of hot key
Modifiers = (UINT) LOWORD(lParam); // key-modifier flags
uVirtKey = (UINT) HIWORD(lParam); // virtual-key code

所以了,除了设定RegisterHotkey外,另要使用SubClassing的技巧才会得知HotKey被按下;最後,程式结束前要使用UnRegisterHotkey将HotKey的定义取消掉。

以下程式功能是:不管在哪个程式中,只要按下ALT-SHIFT-G 便执行NotePad。
'以下在.BasOption Explicit

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long

Public Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4)

Public preWinProc As Long
Public Modifiers As Long, uVirtKey As Long, idHotKey As Long

Private Type taLong
ll As Long
End Type

Private Type t2Int
lWord As Integer
hword As Integer
End Type

Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
If wParam = idHotKey Then
Dim lp As taLong, i2 As t2Int
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hword = uVirtKey Then
Debug.Print "HotKey Shift-Alt-G Pressed "
Shell "notepad", vbNormalFocus
End If
End If
End If
'将之送往原来的Window Procedure
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function

'以下在 Form
Sub Form_Load()
Dim ret As Long
preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
idHotKey = 1 'in the range &h0000 through &hBFFF
Modifiers = MOD_ALT + MOD_SHIFT
uVirtKey = vbKeyG
ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
'取消Message的截取,而使之又只送往原来的Window Procedure
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hwnd, uVirtKey)
End Sub

扁平化设计五大原则 16种折磨开发者的方式 2013年度中国优秀开源项目征集活动正式启动 技术趋势:产品设计向“钱”看 服务器领域:旧时代已过 新时代正在降临 速度与金钱的碰撞:F1赛车将搭上大数据的东风 中国&#183;北京第一届开源大会Hadoop专场侧记:Hadoop已经成为大数据分析平台的标配 Marissa Mayer为何带雅虎重回门户时代? 开发者最爱的三款开发工具 Facebook开源JavaScript库:React 硬件天堂深圳行:从Seeed Studio、Knewone到柴火创客空间 消费应用开发难赚钱?做个企业app store吧 开发开源软件的智慧:够简单,很好用 历届中国云计算大会PPT集萃(终章):架构到实践的全面解析 透过现象看本质:详谈数据可视化 专家观点:HTML5无法彻底抹杀Native应用 Google地图工程主管Raj Shah跳槽至微软在线服务部门 微软证实Windows 8.1引入类“开始”按钮 系统6月26日开放下载 PHP开发者意向调查:移动开发+云服务成为焦点 研发周报:16种折磨开发者的方式 移动周报:Jolla和Sailfish OS,那些你应该知道的事儿 优化技巧分享:把内存消耗降低至原来的1/20 85后程序员:独自一人,完成一个HTML5开源图形库 关于Waze的前世今生,你所不知道的事 代码审查——提高代码质量的终极武器 值得开发者关注的8个HTML5 API 最初设计方案大公开!LINE STAMP 贴图诞生记 安全宝联合华为成立抗D联盟 储备防御带宽达110G 专访中科院贾海鹏:给异构开发者的六个建议 我们死后的遗留数据将会如何处理? 传微软考虑重大重组 或势在必行 关于邮件服务器 组件编写中的问题--如何显示图标 记得以前学计算机的热情很大,并且非常希望有一台计算机,可是现在机器有了,却没有了以前的热情,经典书买了一堆却都没有看,我在想到底要不 关于超星的问题 大家装了windows server 2003么?怎么样啊?讨论一下好么!! 救救我吖!!怎样在oracle8.0.5中直接添加数据!!高分!急!! 大问题!!!装2003后网卡驱程不行,声卡装了听不到声音??? java能不能实现多文档(象VC++中)? 哪位E文好的同志能把这段话翻译出来,是RFC1928中的一段。 一个比较低级的问题-vb里面的回车换行孵的ASCII码是多少?? 奇怪!!!奇怪!!!奇怪!!!奇怪!!!快来看看! 谁知道windows的按文件名排序是怎么回事阿? ie问题 如何从一个框架调用另一个框架的方法?有办法吗?(在线) 突然觉得计算机语言有个误区 请问我用depends打开了dll文件,看到了里面的函数,但是参数表和返回值类型没有啊 水晶报表急问,大家帮帮忙看看! 请教文件查找的问题。 谁知道windows的按文件名排序是怎么回事阿? oracle难学吗 <jsp:getProperty name="userInfor" property="*"/> 出错!!(在线等待) 如何在vb中设置Combo的默认值?立刻给分 点击按纽,打开应用程序文件,并获得应用程序的窗口标题,怎么实现??? Linux遇到CORBA问题——高分有送! 新的IBM 60G硬盘(7200转)在PII上检测不到(硬盘没问题,在其他上能正常使用,有没有解决办法?) 21世纪合格人材必备7大技能 对加密感兴趣的同志请进,介绍一下有关书籍和代码。 word中的特殊数学符号无法在Authorware中显示 windows 下刪除文件是怎麼刪除的用什麼函數??? 找一部电影,《国家的敌人》 高分送高人:一个OLE和数据库的小问题 父子表的更新怎么办? 电话拨号程序,给点提示 关于调用存储过程的问题!在线,搞定就结 求问,关于BEA weblogic 7.0 100分求助Windows Server 2003 的cdk! 那位大侠帮忙谢谢! hello 大家好!不好意思又有问题了 我一直想学会的一个简单问题,谢谢! 问一个参数传递的超菜问题? 怎样才能将资源文件中的 图片 二进制文件 保存到磁盘上 请教这句是什么意思? 关于页面设计的问题?高手请教!! 100分求助Windows Server 2003 的cdk! 那位大侠帮忙谢谢! matlab s-矩阵(若回答满意加100分,每题25分) 关于页面设计的问题,求助? TListView中某一行字体的大小、字体的颜色如何改变? 各位高手给小弟指点指点吧!(DELPHI请教) fastreport中Picture控件的问题? DataGrid动态添加列的问题?? 在线等待...... 如何在视图中排除重复记录? 我悠然前行什么意思 需要中国成语对照给予下面的英语解释:Tell me and I'll forget; show me and I may remember; involve me and I'll understand.Outside noisy,inside empty.Make happy those who are near,and those who are far will come.To forget one's ancesto 欲把西湖比西子,这句诗句品出了 D1和cif的区别是什么?关于图像监控方面的问题 我要中文成语的英文对照.越多越好^^^ weighted salary是什么意思?跟weighted average salary有什么区别?听新东方一个留学讲座老师说前者是起薪的意思,可是百度上边都是后者词条!求解释! ____ do you think has left the message on the wall?A What B How C Whom D Who 下列英文对应的是什么成语?the apple in the hand---?grief and indignation---?carry sth through to the end---?apple-pie order---?faithfulness---?let yourself go---?the lip rifle tongue---?take advantage of a weak point---?as if wakening from 什么是Weighted_Average_Index_Number? 如何应用表观遗传学研究癌基因的致癌作用 重要的用英语怎么写 修辞手法的作用答题 古罗马由共和制转帝制是进步还是后退论文500~800字左右 要悠闲的古诗,要完整的~~~~ 初中修辞手法的作用及答题格式要月考了,居然要考修辞手法的作用,被难倒了.我今年初三,压力有点大的.以上两位的回答我还满意,不过本人还想找几个说明方法(列数字、分类别之类的)的 LOVE什么意思? 做…是重要的 英语怎么说 陶渊明的五首归园田居以及注释和翻译 诊断卡显示D1是什么意思?该怎么解决?进不了系统~黑屏无法通过自检~请问各位达人是什么问题,该如何解决?跟系统无关~ bird 各国是怎么过春节的 硬盘录像机d1什么意思? 什么对我们是很重要的?(翻译成英语) 世界各国的春节都叫什么名称 万二中暑假生活数学部分的几何部分和初一易错题集发答案到时候可以来找我跪谢 战国策 魏策 文候与虞人期猎.是日,饮酒乐,天雨.文候将出,左右曰:“今日饮酒了,天又雨 ,公将焉之?”文候曰:“吾与虞人期猎,虽乐,岂可不一会期哉?”乃往,身自罢之.魏于是乎始强.1.解释下 什么是市场经济主体?市场经济主体具有什么特点? 饮湖上初晴后雨中的”西子“指(    ). 圆柱一定要两个圆大小一样吗 TALKING DODO BIRD HD怎么样 欲把西湖比西子的西湖指哪里的西湖就是西湖是哪个市的西湖 我听朋友说是杭州 但有的说是惠州 《战国策》全文在线阅读战国策全文在线阅读 《战国策.魏策》虽乐,岂可不一会期哉的意思急 治世不一道 便国不法古体现了商鞅什么样的主张 英语:我们打算明天去登长城:We__ __ __ __up the Great Wall tomorrow有 up i m a 商鞅的:治世不一道,便国不法古. 《战国策,魏策》的阅读答案,魏文侯,期什么意思拜托了各位 谢谢 摘 要 随着社会主义市场经济体制的逐步建立和完善,我国许多企业越来越认识到市场竞争的激烈和增强企业竞希望能给予我帮助 很着急摘 要随着社会主义市场经济体制的逐步建立和完善, 英语翻译请问,把“真爱传奇”翻译成英文怎样译才最有深意呢,True Love The Legends 这样拼写正确吗,还有没有更好的译法? 用两张同样大小的长方形纸卷成圆柱(接头处不重叠),并装上两个圆形底面,制成两个圆柱,这两个圆柱的形A.一定相同 b.一定不相同 c.不一定相同 请问“The Bird Of Hermes Is My Name,Eating My Wings To Make Me Tame ”的意思这是动画《Hellsing》中主角阿尔卡特棺材上写的文字,如果能进一步解释Hermes的来历就最好了! 扇形的面积挂钟的时针长7厘米,从1点到6点,时针扫过的面积算式是() 外界的压力,通过正面抗争去战胜它,有时要向雪松那样先弯曲一下,适当的让步,以求反弹的机会理解是啥?费尽脑汁啦 I want to make a bird.就划线部分提问 划线部分:make a bird 函数F(x)=A(x)-B(x),有没有一个公式或定理来讨论或是证明在定义域内的任一x,A(x)>B(X)例如函数F(x)=A(x)-B(x),有没有相关公式或定理来讨论或是证明在定义域内的任一x,A(x)>B(X).因为有的函数像f(x) What+is+the+weather+like+in+July+in+Shanghai?这句话对吗 home made in a tree usually for a bird 用汉语怎么翻译 在开始里关闭计算机时突然出现希望计算机做什么 怎样恢复原来的关机方式 what is the weather like in July in Shanghai?这句话是这儿么说的吗? 欲把西湖比西子.淡妆浓抹总相宜.出自哪首诗? 悠然的意思 对于生活的压力,可以通过正面抗争去战胜它,有时也可以先弯曲一下,作出适当的让步,以更积蓄力量,以求反弹,用一个名句表达这个意思………… 清朝前期实行怎样的外交政策?这种政策的结果怎样 悠然什么意思 酵母双杂交中,转化诱饵载体时的鲑鱼精DNA的作用是什么?酵母双杂交中,转化诱饵载体时,将鲑鱼精同诱饵质粒同时加入的作用是什么? a//b,角1=110度,角2=130度,则角3的度数是? 悠然的意思?在线等. 英语对应的成语1.like a duck to water2.poor as a church mouse3.at sixes and sevens4.spend money like to water5.as timid as a bare 1.在商品交换中,假定l金币=2石谷物,若生产黄金的劳动生产率提高一倍,在其他条件不变情况下,那么现在l金币能够交换到的谷物是A.1石 B.2石 C.4石 D.0.5石 【 】 专家:我国在售5大类17种转基因生物美方称无迹象显示两美国人遭绑架是恐怖中国画家潘义奎获艺术界\"诺贝尔\"土耳其已用中国导弹试验 硬顶美国别买美方称无迹象显示两美国人遭绑架是恐怖俄要求美与“俄机构在美招募间谍”指控美方称无迹象显示两美国人遭绑架是恐怖黎巴嫩军方破获一武装团伙纽约黄金期价24日收高美国民警卫队设施内发生枪击案两人受伤肯尼迪遇刺50周年拍卖会举行 凶手婚国际反恐会议在伊斯坦布尔召开纽约油价24日小幅反弹美元对主要货币24日继续低位徘徊纽约股市三大股指24日上涨报收埃及又一次缩短宵禁时间人民币即期汇率连破四关口 逼近“5时七部委9负责人“应考”科技经费使用北京地铁10号线一个月故障五回 官方南宁:警方在拆违现场遇暴力抗法被迫用美“杀死中国人”节目被删 万人在白宫重磅!中央定调一件大事,将影响7.5元宵节来了,多大的宝宝能吃汤圆?我和小伙伴都惊呆了还记得小时候是怎样骂人的吗中国是个净债权国,美国还能如何刁难?图说天下丨免费IP热:大圣很忙,从不76岁才能把自己缴的养老金拿回来?人过期后必须要扔哪些药物?话说马上就要开学了。。。。。喵星人的弹跳力简直惊人!!【冷兔槽】每日一冷NO.1078一百部电影,一百个人生真相二月烂片太多,快来看这部电影洗洗眼反智+圣母?你们真是不懂她用心良苦走进海口观澜湖新城闵行大华出租车司机车内劫财杀人没有“家”的贺岁档麦当娜,为何有迟到特权?里约公开赛 纳达尔爆冷输球巨星加盟,中超“Big4”亚冠之路更恒大新赛季赢球奖金出台
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘