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

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

Android读写Txt文本文件代码 Android游戏开发之旅17 图像渐变特效 Android游戏开发之旅16 异步音乐播放 Android游戏开发之旅15 按键中断处理 Android游戏开发之旅14 游戏开发实战一 Android游戏开发之旅13 Sensor感应示例 Android游戏开发之旅12 Sensor重力感应 Android游戏开发之旅11 View中手势识别 Android游戏开发之旅十 位图旋转 Android游戏开发之旅九 VideoView类剖析 Android游戏开发之旅八 SurfaceView类实例 Android游戏开发之旅七 自定义SurfaceView Android游戏开发之旅六 自定义View Android游戏开发之旅五 Path和Typeface Android游戏开发之旅四 Canvas和Paint实例 Android游戏开发之旅三 View类详解 Android游戏开发之旅二 View和SurfaceView Android游戏开发之旅一 长按Button原理 Android程序内存管理必读 Android按键事件映射表和转义符对照 Android Intent大全更新到API Level8 Android中Intent对应的category列表大全 Android中内嵌字体实现个性化 TextView多行本文滚动轻松实现 获取和设置ListView的选择项 EditText中显示隐藏Android输入法窗口 自定义ListView行间的分割线 Android程序完全退出的三种方法 WebView使用技巧和介绍 EditText仅允许特定类型数据输入 自定义Android应用的访问权限 session 和 cookie 各有千秋,区别在那里啊?敬请赐教! fm1008leaf(小幻姬(玉笛书生的徒弟)):我考考你就知道你是真是假! jneu(沧海桑田)怎么不理我?有关宏拷贝问题 paradox中的NUM类型在sql语句中是什么类型?为什么asfloat会出错? 关于J2EE的就业前景,值不值的花二万元参加一个二十天的培训,欢迎大家热烈讨论 在listbox 中,如果知道了一个Item的内容,怎么知道它的indix 今有同仁问到,三十以后咋过。恰巧心情郁闷,发上几句牢骚。 少年暗恋对象,早已嫁作人妇。那天遇见街头,孩子叫我叔叔。 OICQ问题! 如何可获得Table 内字段的类型及长度? windows2000 server 的internet 共享怎样设置权限 软件开发的请进来讨论,关于报酬的问题。大家多提建议。 1.为什么有些地方可以用MessageBox函数,有些地方不可以2.mfc的CView::OnFilePrint提供了打印的方法,要是一个程序没有视图要打印一般用什么方法? 请问在DEVELOP2000里面可以使用进度条控件吗?怎么编程实现? ???oracle监听器问题? WebBrowser控件获得网页中文本框的名称该如何写? CFtpConnection 怎样在FastReport中控制或判断所连接的数据库表到了eof? CTypedPtrList模板对象中,如何删除指定位置的元素??十分着急! ms sql server 的技术问题 怎样清除事务日志????????? 在那里改个人在cdsn.net注册信息(如名字,地秩)? 关闭窗口的事件如何触发?( 高手们请问deiphi如何实玩宏代换???????????十分火急!!!!!!! 请帮忙!!SOS!!! 请问如何实现宏代换????????????? 关于打印的一个不错的设想 我是新手,初次接触网络管理,请问要管理局域网需要具备哪些方面的知识,需要安装那些应用软件?有什么好书可以介绍吗?谢谢各位! 在VB中设计控件,其上放有uText1、Text2,当uText1失去焦点时,并不触发Validate事件 如何在程序中判断是否做了超级连接? 怎样使listview中的大图标左右居中,上下居中。 怎么样处理聊天室的退出问题? 比较大的问题,请做过JAVA系统集成方案的朋友指点!!! applet,这个霸道的家伙!怎么解决阿? c++类的一个小问题 一个大家都很棘手的问题 关天构造函数的问题 学习《windows程序设计》中的问题? pb8里的autoscript怎么弹出那么慢 消息:c++与Visaul c是不是有一定的区别呢? 怎样通过程序获得当前可用的拨号网络列表?? 高手在哪里?-------> 如何在第一时间里获得屏幕的变化呢?及获得屏幕变化的那部分?各位大师,帮帮我。谢了。 请问想具备基本的网络和数据库管理方面的知识,看什么书好啊?请大家帮忙推荐一下,谢谢! 请教W2k下使用Access的问题 大家帮帮忙,sql菜鸟问题, 各位兄弟帮忙看一下 谁知道高程分数线?拜托告知一声! 如何判断是否做了超级连接? vc中怎样调用dos下的代参数的可执行文件???请教! 如何让TreeView控件的每一个子节点前有一个多选框! jbuilder4中的JGL的问题 如何构建一个数据仓库(高分求救) 怎么样在NT里看到我的电脑装了哪些硬件? 食盐中碘含量 2011年高一化学期末检测试题最后一题取4、6g某有机物在氧气中完全燃烧,只有二氧化碳和水蒸气生成.现将生成的混合气体先通过足量硫酸,浓硫酸增重5、4g,再将剩余气体通过澄清石灰水生成 配平化学方程式具体算法? 最好说的通俗易懂. 谢谢啦 1.五水硫酸铜和硫酸铜溶液有什么区别?不是硫酸铜加水得到五水硫酸铜吗?2.硫酸铜溶液是由无水硫酸铜加水得来的吗?3.CuSO4·5H2O是属于化合物还是什么?4.水合结晶硫酸铜又是怎么回事?是什么 高一化学必修2期末试题 要所有化学方程式配平方法详解,还要举例的. 硫酸铜五水硫酸铜无水硫酸铜无水硫酸铜不能容解是吗?如果能溶解,那它的溶质叫什么?五水硫酸铜溶解以后的溶液叫五水硫酸铜还是硫酸铜?为什么?具体有什么区别? 无水硫酸铜在空气中短期放置是否会变色短期放置 能否在试验中用于测试空气中是否有水分?若不能 应怎样测试? 食盐的成分 如何由硫酸铜溶液怎么得到五水硫酸铜? 一包食盐质量为1kg,其中含碘酸钾5%,则这包食盐中含碘元素的质量是多少?答案是0.03kg,求过程. 食盐的成分是氯化钠这句话是描述食盐的什么性质?是物理性质还是化学性质 高一化学题(气体摩尔体积计算)在标准状况下,11.2LCO和CO2的混合气体质量为20.4 g.求它们的体积之比和质量之比. 一包食盐质量为1kg其中含碘酸钾5kg则食盐中含碘元素的质量是?说出原因,写出计算过程. 高一化学必修一物质的量习题8.4g氮气和9.6g某单质Rx所含的原子个数相同,且分子个数之比为3:2,则R的相对原子质量是——,x的值是——.小学生绕道,知道的来 一道高一化学题(关于气体摩尔体积计算)19世纪有些化学家测定某元素R的相对原子质量时,采用的办法是:用等容积的烧瓶4只,分别盛入N2、X、Y、Z四种气态物质,操作时先把烧瓶抽成真空,充 1kg某食盐中含碘35±15mg,则含碘酸钾应为多少克? 练习题一、填空题 1.5molCO2的质量是______;在标准状况下所占的体积约为______;所含的分子数目约为______;所含氧原子的数目约为______.2.在400mL2mol/LH2SO4溶液中,溶质的质量是______.此溶液中 3 高一化学气体摩尔体积练习在同温,同压下,A容器的氯气和B容器的氨气中,若他们所含的原子数相等,则这两个容器的体积比是?A 2:1B 2:3C 1:2D 1:3 1kg食盐中最多含有碘元素的质量是多少? 这里有个高一化学方程式,请配平,Na2SX+NaClO+NaOH=Na2SO4+NaCl+H2O注意:其中x为未知数!还有一个比较简单:K2Cr2O7+Fe3O4+H2SO4=Cr2(SO4)3+Fe2(SO4)3+K2SO4+H2O CS2(常温下为液体)在氧气中充分燃烧生成SO2和CO2,若0.1mol CS2在1mol O2中完全燃烧,反应后气体混合物在标准状况下的体积是多少? 食盐中的碘含量是元素含量还是碘酸钾含量? 高一化学方程式配平的方法 高一化学题下列说法正确的是()A 28克氮气所含有的原子数目为NAB 4克金属钙变成钙离子时失去的电子数目为0.1NAC 1mol甲烷的质量与NA个甲烷分子的质量之和相等D 标准状态下,22.4L甲烷和乙炔混 物质的量 有关的计算题...已知K的氧化物有K2O2和 KO2,在这两种化合物组成的混合物中,钾和氧的质量之比为13:8,求混合物中K2O2和 KO2的物质的量之比.. 什么植物里有盐的成分 市场上有卖不含碘的盐吗?是什么品牌的? 氧化铬能够用碳还原么?请写出化学方程式最好能够注明相对分子质量我用重铬酸铵粉末制取了少量的氧化铬,现在我想用碳还原,因为氢气、一氧化碳不安全,敢问能否实现?有什么现象? 高一化学方程式怎么配平 怎样测试盐含不含碘把土豆切开放点盐,土豆变色就是含碘,这种方法对吗? 盐有什么化学成份 HNCO+NO2→N2+CO2+H2O 不含碘的食盐能吃吗 盐的成份是什么主要由钠组成的,还有其他的微量元素 第一题:AgF+Cl2+H2O---3AgCl+AgClO3+4HF+O22:KMnO4+FeSO4+H2O---Fe(OH)3+MnO2+Fe2(SO4)+K2SO4纠正 是Fe2(SO4)3第一题没系数存在 打多了 吃不含碘的盐好吗 食盐的成分是什么 物质的量入门题!大师请过目纠错!顺便把空着的写下过程! 不含碘的食盐西安哪里有?盐务局?谁帮我问 氢氧化纳和碳酸铝的化学反应方程式 高一入门化学 物质的量的问题1.a mol 硫酸中含有b个氧原子,则阿伏伽德罗常数可表示为 A 4b分之a 摩 B 4a分之b 摩 C b分之a 摩 D a分之b 摩2.配置50摩的HCL 6摩的KCL 和24摩的K2SO4的营养液 ,若用KCL HCL 无水硫酸铜与什么反应能变色还要在后面写出化学式 可使白色硫酸铜粉末变成蓝色晶体的气体是什么 化学高一必修1物质的量2摩尔NO和2摩尔NO2中所含的原子数相等吗?我想问一下:假如我用N1:N2=n1:n2的公式来算的话,2摩尔的NO和NO2质量就是相等的,但计算2摩尔NO和NO2时,NO中所含的原子为4摩尔,NO 氢气能使无水硫酸铜变色吗 白色CuSO4粉末通过什么会变成蓝色晶体 高一必修一化学物质的量下列物质中氧原子数目与11.7gNa2O2中氧原子数一定相等的是A.6.27L CO B.6.6g CO2 C.8g SO3 D.9.6g H2SO4不是单选题 无水硫酸铜放入水中变色是化学反应吗?是无水硫酸铜! 白色硫酸铜粉末加什么粉末变成蓝色晶体?化学式是什么 物质的量方面下列关于溶液物质的量浓度的说法正确的是( )A.把1mol/L NaCl溶于1L水中所得溶液的物质的量浓度为1mol/LB.把0.1mol/L投入100ml容量瓶中,加水至刻度线,充分震荡后,溶液浓度为1mol/LC. 含碘食盐怎样日常保存?如题我想找些关于含碘食盐的日常保存的资料,做探究用的. 谁有高一化学上学期期末试卷 1.1.5molCO2的质量是多少?有8.8gCO2中含有多少个CO2分子?2.9.8gH2SO4中有多少个H2SO4分子?多少个氢原子?多少个硫原子?多少个氧原子?多少个SO42-离子?3.1.204×1023个H2O分子的物质的量是多少?质量是多少? 怎么去除食盐里的碘 高一化学期末试题.在稀硝酸中加入CuO粉末,恰好将CuO全部溶解,溶解后无色溶液变____色.在所得溶液中加入过量铁粉,可得红色固体和浅绿色溶液,其反应方程式是____.滤出固体,在溶液中加入稀硫 急+追分!1.用30gNaOH溶于500ml水中,所得溶液的密度为1.02g/ml ,求该溶液的物质的量浓度.2.700体积的NH3(标况)溶于1体积的水中,所得溶液的密度为0.9g/ml,求所得溶液的物质的量浓度.3.将足量的金属锌 如何验证盐中含碘首先,在选购时应注意检验一下含碘量.用少许盐放入白瓷碗内,用水拦湿入微量漂白粉拌匀,再加入少量淀粉,搅拌观察.若盐中含碘,便呈蓝色,含碘越多,蓝色越深,若无碘则呈现 西宁2007-2008高一化学期末调研试卷 盐的成分是什么
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn