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

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

低功耗之争:英特尔 VS ARM NEIC-诺基亚体验创新中心 助力开发者创享新移动互联时代 Google地图主管Daniel Graf:新设计,新目标 浴火重生:OpenFeint创始人推开源平台OpenKit 紧随AWS数据仓库服务 Rackspace力鼎Cloudant 创业者谈:畏惧失败,但也要拥抱失败 谷歌赢得一场战斗 苹果能否赢得战争? 走进大学校园:是什么让学生成为独立开发者? 移动周报:为什么说独立开发者才是光明康途? MapFan eye:看日本地图导航应用的新玩法 数据会被清空:部分三星、魅族手机存安全漏洞 IE10简化文件访问 支持FileReader API 从MySQL迁移到MariaSQL Wikipedia力求开放 奥巴马筹款网站的制作过程 国内芯片厂商发力4G 新岸线2013年将推LTE方案 CMDN Club 23期:开放平台和O2O移动产品开发 花旗调低Apple股票评级 不信iPhone5会卖得好 2012年Linux Journal读者选择奖结果公布 百度云SiteApp:三步轻松创建移动网站 Twitter跨数据中心图片存储系统Blobstore解析 摩托罗拉携手中国移动发布Intel Inside智能机新锋丽i MT788 第五届“英特尔杯”全国大学生软件创新大赛圆满落幕 Appro推出液冷超级计算机 Dell:曾敦促微软WinRT放弃Windows品牌 IE10十大优点:渲染页面比Chrome快8% 法国电信:开放平台下的O2O移动产品怎么玩? 客如云创始人彭雷:寻找O2O“失落的半圆” 中国电信宋鹏飞:天翼开放平台的服务及架构解析 W3C小组宣布:HTML5标准制定完成 还记得DUQU吗?起因可能是Windows中存在了20多年的漏洞! API管理的五大规则 实际编程中碰到的问题,高手赐教 关于树的问题!急 C++菜鸟有分!!! 无线问题 如何管理软件系列版本 快要疯掉了!服务器端与客户端的文件传送问题,请高手千万援助! 山东的朋友能否将较好的公司和较差的公司曝光一下!!!! 有哪位高高手知道ldap数据库怎么进行迁移呀? 互联网在线支付平台可行性 关于Form的问题??? 简单数字段问题 不能用redhat7.3自带的输入法,中文名字显示为问号。怎么解决 请问怎样把整型转换成字符串型? 谁在BCB下用过研华的PCL-812采集卡? 8数码和8皇后的算法,大家指点我一下看看,up有分,分可以加 数据库连接讨论!各位在连的时候用的是ADO,还是RDS? 有关上网设主机的问题(双网卡)(在线等) directx8中哪只函数支持播放内存中的声音文件 万分紧急!!!!!!先谢过! 那里又"绝世宝贝"下载? 哪位大哥帮翻译一句话!非常感谢!!!!!!!!!! 请问一个问题:用acdsee如何把点阵图转化成矢量图? cdonts在客户端发送附件,为什么失败? 第一行,第一列错误是什么回事阿? 怎样计算php里的时间差,mysql的时间差? 关于控制台程序 BYTE型怎么 输出到文件(急) 广州IT俱乐部活动讨论 OleContainer1对象如何使打开的文件嵌在OLE里面,而不是在外部打开DOC文档. 寻兼职程序员,开发一个的屏幕取词工具软件 那里有interdev下载?在线等 小弟初学vb.net,现有一题急需帮忙. oracle9客户端连接oracle816:tns 出错: 写文件换行,再按行读出 ASP开发工具的讨论!大家都用什么开发工具!DreamWeaverMX有没人用啊?看起来功能挺强的! 哪位大哥用过toplink连接oracle数据库的,请进 如何获得给定的文件的路径,比如文件"a.txt"发路径? (((SOS)))在WebForm中怎么样用程序隐藏dataGrid由属性生成器生成的按钮列(删除。。。) 高分求帮助 请问一般在VB中,该如何维护ACCESS数据库 asp的Response.Write的问题? 你们难道没遇到过这个问题? 大虾们救命!!!在线等待.................. 在次提醒!女孩不要看! ADODB.Stream 错误 '800a0bbc' 用sql的朋友们进来看看,问题不是很难,帮帮我。谢谢。 寻兼职程序员,开发一个的屏幕取词工具软件 怎么在sdk编程中设置editbox的初始值 大虾们救命!!!在线等待................. 如何能够屏蔽WM_SIZEING的消息. 关于DataGrid的问题 日光灯,节能灯对家庭电路电压的影响每次电路中有日光灯或者节能灯打开的时候,多孔插线板上的电压仪指针就会左右大幅度摆动,最低的时候差不多能到100V的样子(指针指示比较准确的),而且 为什么身体上有水的时候电阻小,更容易触电? 印花增稠剂的增稠机理都有什么? 曙光.填词语.填的越多越好,比如 使用测电笔为何人体不触电,是因为笔中有高电阻的原因吗? 发达国家和发展中国家的经济发展水平存在差异的原因 填字成词( )色降( ).晨光( )( ) 生活常识 字数简短 最好不要超多20个字.大概需要100条 发达国家与发展中国家在经济发展水平上究竟有多大差距? 与发达国家相比,我国科技差距三么表现在哪些方面 安全小知识100字手抄报里的! 美国航母一旦进入黄海、东海、南海以及中国的近海,中国人民坚决地击沉它!打赢一场战争,不完全取决于军事武器的先进性和武器数量的多少,中国人民从来爱好和平,但从来不畏惧战争,美国 请问这个分子缔合性微观角度到底是由什么引起的呢? 关于科学方面的小知识,一则不要太长,100字以下 假如东海或南海开战 我们国家有能力把美国航母群打回去吗听说有反舰导弹 举个例子,谢谢举个例子例子例子 求100字的健康小常识!不要多,100字就好,越简短越好,不过,要保持在100多字左右! 初中化学溶液的颜色(只要溶液哦~) 水的缔合性是指什么~~~~请讲得简单一点.谢谢~~ 为什么H 和F 在形成化合物的相对分子质量时,实验测得值一般高于理论值?和缔合分子的形成有什么关系? 大家说说中国的第一艘航母应该放在哪儿?南海,东海,黄海,还是印度洋? 什么是物质缔合性 缔合是什么意思? 美国要派航母在中国黄海,南海军演我过怎么办? 中国在国几年才能让贫困差距缩小到象其他发达国家那样? 将30欧姆的电阻与50欧姆的电阻并联后接入电路,总电流为1.6A,求通过两个电阻的电流各是多大?急 关于水分子的缔合,为什么是一个孤对电子吸引一个氢?一个水分子与其他的4个水分子.因为,水分子有两个氢和两个孤对电子.一个孤对电子吸引一个氢,于是两个孤对电子吸引两个氢.自身的氢 怎么判断在任何情况下电压表测的用电器 把阻值为10欧姆的电阻接入电路中,当通过它的电流变为原来的1/2时,电阻为___欧姆,当通过它的电流变为原来的2倍是,电阻为___欧姆,当电路断开是,电阻为___欧姆. 问一个问题:人体的电阻大概是多少?是阻值大容易触电还是阻值小容易触电? 直流稳压电路的怎么组成的? 病毒生存离不开 寄主 细胞寄主细胞 是什么意思 人体触电是否反生危险,决定于通过人体的电流大小和通电时间,而在电阻一定的情况下,电流又与电压有关.我们在道路上或工地上,经常会见到“高压危险”的警示牌,说明电压太高容易发生危 串联型稳压电路中的比较电路如何进行比较的? 天有有多少颗星星? 太阳星星有多高 做一稳压电路,稳压芯片的引脚接错会对电路产生影响? 好久没注意星星了、这种天气还有星星么? 太阳究竟有多高,星星到底有多少啊. 水加什么类型的增稠剂变得很稠就象洗洁精一样 天为什么有星星 问一下太阳到底有多高,星星到底有多少. CMC加多少水可以做增稠剂呢 夜晚没有星星表示天气怎样呢?或者是隐含着什么寓意呢~天上既没有星星,也没有月亮.黑漆漆的. 有时在天空总能看见“拉线飞机”,这是干什么用的?我有时在家,或在外面,总你哪个看见拖着长长的白烟的“拉线飞机”,这是干什么用的?我看比普通天空中飞的客机,飞的还要高! 能使干燥的碘化钾淀粉试纸变蓝的是A氯气B碘水C溴化钠溶液D食盐水对湿的淀粉碘化钾试纸无明显作用的是A溴水B盐酸C浓硫酸D碘我知道答案,只是想要理由~最好每个选项都有理由哈~ 一个正方体玻璃缸从内量长3分米,到人18升水,里放一条鱼,水深2.1分米,求鱼体积 见天使11月13日,霸州,我在天空中看见一个会发红光的物体,尾部像飞机拉线一样,那是流星吗? 淀粉碘化钾试纸变蓝的条件是什么?如题 将一条鱼放进一个长5分米、宽2分米的水缸中,水面上升2·5厘米.鱼的体积是多少立方分米 有时在天空总能看见“拉线飞机”,这是干什么用的?我有时在家,或在外面,总你哪个看见拖着长长的白烟的“拉线飞机”,这是干什么用的?我看比普通天空中飞的客机,飞的还要高! 设计一个输出20V直流电压的电路(要求用7812完成)阐述电路原理,跪求高手速度点解决-不然就挂科勒-图原理 自来水的水在太阳下晒多长时间才可以养鱼,还有我的浴缸深度10CM,宽40CM,可以养几条鱼,每天给鱼晒几时 单相触电电流回路可以说是火线-人体-大地-火线吗? 有一个看不清阻值的电阻 Rx(大约几欧姆) ,为了测出它的阻值,设计了如图电路,已知:R0=12Ω,滑动变阻器的最大阻值Rab是10Ω.S1闭合S2断开,滑片P滑倒b端时,电流表示数是0.5Α.S1,S2都闭合,滑片P滑倒 用电器正常工作时两端电压为36V,通过的电流是0.6A,这个用电器的电阻是多大? 用手碰火线,只要人不与大地接触就不会触电,与大地接触就会触电的原因如果人与大地接触了为什么会形成回路啊?形成怎样的回路啊? 有机化学氯代物种类规律比如说乙烷的一氯代物有一种二氯代物有两种一个种类个数公式而不是书写原则 人体的触电时如果电压越高,人体的电阻就越低!而且触电电压升高时人体的电阻降低的越快书上这么写!是对的吗狗屁都不懂 站在干燥板凳上的人双手接触火线或单手接触火线为何不会触电,站在大地反而会触电双手触摸火线,可以理解成电流左手进右手出啊,单手可以是食指进拇指出啊,又不是绝缘体,关板凳什么事,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘