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

按下某组键(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

120万操作/秒Redis Cloud 集群单一服务器非基准测试程序 2014微信开发者大会顺利结束 TOP10优秀微信开发商名单公布 【最佳实践】通过DevOps确保可靠和有效的信息安全 2048 Hello World:跨平台快速应用开发Python框架Kivy Forrester:关于私有云的10个事实 2014年8月操作系统份额:Win 8.x大涨,Linux继续下跌 0代码、不编程—交互式网页设计工具VXPLO 揭秘Instagram Hyperlapse背后的技术 【CTO俱乐部在线教育研讨会】用互联网技术深入创新教育产品 降低门槛!Hybrid应用开发框架LigerMobile 下一代IT革命:微服务器和雾计算 使用Mongo Connector和Elasticsearch实现模糊匹配 时隔8个月,物联网联盟AllSeen如今怎样? 《近匠》简网:开发零门槛 快速建原生App MDCC免费展位申请超预期 大会内容初曝光 在服务器与交换机定制之后,谷歌着手量子计算机CPU设计 电信天翼开放平台鲍占斌:优质能力 分成比例高 艾格拉斯副总裁王晓波:手游定价如何设计 Xcode 6 Beta 7发布:语法定、内库改,Swift何时完善? 干货来袭:由22个联邦机构分享的6482个数据集 Phablet出货量今年将超移动PC,明年再超平板 如何提高Web服务端并发效率的异步编程技术? 改改改!让应用通过审核出人头地的10个方法 正益无线CEO王国春:AppCan如何获得50万开发者青睐 在收购Xtreme Labs之后,Pivotal推出PaaS移动服务 .NET开发者必备的11款免费工具 .NET开发不可错过的25款高效工具 Docker最佳实践!尽在2014 Container技术大会 pflua:用Lua编写的高性能网络包过滤工具箱 掌上明珠张磊:如何设计手游付费体系 云游科技何千军:游戏开发和后端逻辑经验 为什么我在JSP中能得到TEXT文本中的数据,却得不到在SELECT中的数据呢? 求救!为什么我的ACESS数据库文件会莫名其妙的达到25M,我还没输任何数据呢?而生成MDE后只有500K? 我要一个功能强大的弹出日历 Viva La Costa Rica! 我再也不看Chinese Team的比赛了! 如何做jar包呢?还有如何做bak呢?大家救救我吧。 《inside the c++ object model》问题 这句是什么意思??? 问一个Win2000Server域用户客户端登陆问题。 小问题:在线等待:) 如何删除一个ini文件中的关键项目?急 求救!为什么我的ACESS数据库文件会莫名其妙的达到25M,我还没输任何数据呢?而生成MDE后只有500K? 求教关于c++builder的图象预处理的源代码。50分!!还有金钱相送! access的问题 郁闷!!关于数据窗口一个奇怪的问题!! 如何实现断点续传 寻求《软驱监控程序》!!!!!!!!!!!!!!价格面议 用imp恢复数据库,要做什么准备呀? 刚才给分失败,重新散分! 关于SQLserver数据库和MDB数据库的句语问题!!! IE数据保密大全,如何禁止以下功能?菜单,工具栏,收藏夹,鼠标右键,PRINTSCREEN键,键盘快捷键 帮忙:DCOM 无法使用任何配置的协议与计算机 慨n 通信? 查询问题 请教bean中填写方法问题,高手帮忙啊!!!!! 昨天回家遇到打劫,被暴打一顿 本人有一个数据窗口对象中的一个字段,其为DDDW型的,可是在它的选项页中却怎么也不能显示出我想设置的名字显示出来,却总是显示保存在表中 在线求助,当场送分。 用MASM编译DOS程序经常有问题啊!? asp.net问题 有关DateDiff的问题。。。SOS 请问用什么软件制作chm帮助文档? 数据库中记录条数在增加,但字段却是空的呀??? 高分求:如何确定TreeView的SelectedItem为空? ******* 怎样调试硬中断程序? 存储过程中的一个语法问题 servlet中forward到jsp页面的显示问题 SOS:请问一个页面在不同分辨率下适应性的问题! 我在做数据库链接时,出现了编译错误,实在看不错在哪里(在线等待) rpm的升级过程中的问题,请大家关注 有关gethostbyname的问题 关于数据库系统信息的ini文件 请问一个简单语法问题 股票界面的画法问题 自从和男友去看了《我的野蛮女友》后,我又变野蛮了~~ 一个小问题 在aspx文件中取出aspx.vb文件中的数据怎么做到? 救命!! 为什么我的数据窗口中的编辑框不能写入数据(问题解决,立即给分) 如何立即更新水晶报表中的数据库?关于水晶报表高分(100) 关于makefile问题(在线等) ASP编程中的问题,很急…… 如何写手机短信程序? “聚乙二醇--药物溶解后……形成核晶非常困难,……故溶质可形成微晶”当聚乙二醇--药物溶解后迅速冷却药物形成核晶非常困难,由于低温时介质粘 度很大形成固化时间很短,故溶质可形成 利用二氧化碳的气体就能区分氢氧化钠,氢氧化钙,和稀盐酸三种溶液吗 酸性氧化物的性质rt分条列出来 纳米晶软化水的效果怎么样? 利用二氧化碳如何区别NaOH、氢氧化钙和稀盐酸 酸性氧化物的性质怎样体现. 说的是宗法制宗法制! 一氧化碳是否为酸性氧化物 大家帮一下忙啊,初中酸性氧化物性质的概念,谢拉,要是初中的啊! 关于酸性氧化物的疑问酸性氧化物的定义为酸性氧化物是一类能与水作用生成酸或与碱作用生成盐和水或与碱性氧化物反应生成盐的氧化物(且生成物只能有一种盐和水,不可以有任何其它物 在运动场上常见到的一些现象中,不能用惯性知识解释的是短跑运动员跑到终点后不能立即停下来跳远运动员要助跑一段距离后才起跳投掷铅球是,铅球离开人的手以后继续向前运动跳高运动 一氧化碳是不是酸性氧化物 酸性氧化物和碱性氧化物酸性氧化物或者碱性氧化物与其它物质反应通式 食盐食醋纯碱能否检验鸡蛋壳溶于酸 一氧化碳是酸性氧化物吗,为什么? 解释惯性的步骤(4个) 宗法制为什么有如下优点历史书上写:::宗法制有利于凝聚宗族,防止内部纷争,强化王权,把“国”和“家”密切的结合在一起.为什么? 一氧化碳为什么不是酸性氧化物?我知道它不是酸性氧化物.想知道深层的原因. 食盐晶体这类的物质属不属于电解质? 误食水银死亡是什么症状?多少水银能致人 一氧化碳为什么不是酸性氧化物?若它不是那它是属于什么性质的物质我们那个二逼化学老师撒都讲不好,就说了一氧化碳不是酸性氧化物,也没说为什么不是.而且像CO2、No都符合酸性氧化物的 惯性解释系列的习题应该有一个固定的解答模式吧.例如:用力击打一摞棋子的最下面一个,情况会怎么样?为什么?如以上问题,怎样解答能得全分?其实我主要是想问对于这类问题的完美答案,请 加热a克氯酸钾和b克氧化铁的混合物,反应完全后,得到c克氯化钾,则生成氧气的质量为?A.(a+b-c)克. B.(a-c)克. C.(a+c)克. D(b-c)克. 酸性氧化物的特征 一些不溶盐是电解质吗 还有 氢氧化钾固体是电解质吗?如碳酸钙固体等 银子遇水银变黑怎样清洗 酸性氧化物的特点是什么?还有碱性的有什么特点请告诉我常见的酸性氧化物和碱性氧化物 什么是干扰素?干扰素的作用是什么? 银手镯遇汞变黑怎么办?我在甩温度计时不小心将温度计磕到了银手镯上,现在手镯遇汞变黑(乌)了,请问怎样才能使它恢复光泽? 酸性氧化物的特征和组成部分是什么? 求氢氧化钠和二氧化碳反应方程式(有过量么?) 铝和氧化铁反应的实验探究:为什么要在混合物上面加少量氯化钾 秦朝灭亡了之后秦始皇的女儿姬妾都到哪里去了? 干扰素的作用 请问彩金戒指遇水银变黑了怎么办?戒指3600元买的,温度计打坏了,水银沾到了戒指上,戒指黑了,以前买戒指的地方也搬家找不到了,别的珠宝店都不敢收,我该怎么办?结婚时买的,扔了太可惜了, 西周宗法制的主要内容和实质简略一点概括重点 过量的氢氧化钠和二氧化碳反应方程 关于电热水袋换水后无法加热的问题我是新买的热水袋,用了两个星期,今天换水,然后就不加热了,水里加了些盐就又能加热了.我是想问,是为什么才会爆?是因为热水袋在加热的时候会有气体产 秦始皇后的秦朝多久灭亡的? 请问:干扰素a-2a和干扰素a-2b的作用?干扰素a-2a,干扰素a-2b各自的药理作用和各自的适应症. 固体水银有毒吗?误食后会死吗? 西周宗法制的实质是什么呢?(内容简要的) NaOH和少量,过量CO2的反应方程式分别是… 烷烃的所有性质都与甲烷相同注是相同不是相似 秦始皇自即位以后到秦朝灭亡,秦朝出了几个上将军. 下列现象中不能用惯性解释的是1、骑自行车上坡前往往要加紧蹬几下加大速度2、人从形式的车上跳下来容易摔倒两个从中选一下 需要一些理由说明 水银遇空气发生什么反应 西周实行宗法制,根本上是要?A、保证嫡长子一系的特权B、巩固父系家长在本宗族中的地位C、封邦建国,拱卫王室D、保证王权的稳定 下列现象不能用惯性解释的是》A.骑自行车上坡前,加紧蹬几下B.跑步的人绊到石头容易摔倒 13 2010年3月召开的第十一届全国人大三次会议,表决通过了关于修改《中华人民共和国选举法》的决定.这表明全国人民代表大会具有 A监督权 B任免权 C立法权 D决定权 各位高手,选哪一 请你们帮我选选,并说明原因可以吗?..西周实行宗法制的根本目的是( )选项1:广建诸侯藩国选项2:区分血缘亲疏选项3:保证法律执行选项4:巩固分封秩序 下列现象中,能用惯性知识解释的是()多选A.拍打衣服,灰尘脱离衣服B.人从行驶的车上跳下来,容易摔倒C.短跑运动员到达终点后不能立即停下来D.用力将物体跑出去,物体最终要落到地面上我 少量二氧化碳通入氢氧化钠溶液中和 过量二氧化碳通入氢氧化钠溶液中的离子反应方程式? 西周宗法制的实质.宗法制对中国封建社会有什么影响 魔兽体内的“晶核”是干什么用的?有什么作用?写玄幻小说用. 十一届全国人民代表大会第一次会议十一届全国人大三次会议是什么意思?有什么区别? 酸性氧化物有哪些性质?酸性氧化物能与哪些物质反应,表现什么性质? 纳米的作用是什么我想知道的是作用 桥烷烃有什么特殊的性质吗? 酸性氧化物 性质
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘