



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、vba中检测键盘控制键(shift control alt)状态来源:水文工具集分类:代码,博客标签:vbavba编写的程序中,经常需要提供一些功能键或者快捷键或者是辅助键,比如shift|control|alt,以方便用户更方便使用你的程序。vba中并没有相关函数来完成检测键盘控制键状态的函数,因此,必须使用windows api函数getkeystate。getkeystate函数会返回某个指定按键的状态(按下或者未按下)。水文工具集提供vba编写的3个相关函数,可以方便你在代码中使用,用以完成相关功能。isshiftkeydown:检测shift控制键状态iscontrolkeydown
2、:检测control控制键状态isaltkeydown:检测alt控制键状态上面的函数返回true或者false,当指定按键按下时返回true,而未按下时返回false。函数的定义如下:01.publicfunctionisshiftkeydown( _02.optionalleftorrightkeyaslong= leftkeyorrightkey _03.)asboolean04.05.publicfunctioniscontrolkeydown( _06.optionalleftorrightkeyaslong= leftkeyorrightkey _07.)asboolean08.0
3、9.publicfunctionisaltkeydown( _10.optionalleftorrightkeyaslong= leftkeyorrightkey _11.)asboolean上面的函数都有一个可选的参数来指定是检测只有左边或者只有右边或者两者其一或者同时按下控制键,默认是左边右边两者其一,具体的可选参数有下面的类型:1.publicconstbothleftandrightkeys = 02. both left and right together3.publicconstleftkey = 14. left key only5.publicconstrightkey =
4、26. right key only7.publicconstleftkeyorrightkey = 38. either left or right or both当然如果加以修改,一样可以用来其它功能键。vba中检测键盘控制键(shift control alt)状态具体源代码如下:01.=02. vba中检测键盘控制键(shift control alt)状态03.04.05.=06.optionexplicit07.optioncompare text08.09.privatedeclarefunctiongetkeystatelibuser32( _10.byvalnvirtkeya
5、slong)asinteger11.12.privateconstkey_maskasinteger= &hff80 decimal -12813.14.privateconstvk_lshift = &ha015.privateconstvk_rshift = &ha116.privateconstvk_lcontrol = &ha217.privateconstvk_rcontrol = &ha318.privateconstvk_lmenu = &ha419.privateconstvk_rmenu = &ha520.21.privateconstvk_lalt = vk_lmenu22
6、.privateconstvk_ralt = vk_rmenu23.privateconstvk_lctrl = vk_lcontrol24.privateconstvk_rctrl = vk_rcontrol25.26.publicconstbothleftandrightkeys = 027.publicconstleftkey = 128.publicconstrightkey = 229.publicconstleftkeyorrightkey = 330.31.publicfunctionisshiftkeydown(optionalleftorrightkeyaslong= lef
7、tkeyorrightkey)asboolean32.dimresaslong33.34.selectcaseleftorrightkey35.caseleftkey36.res = getkeystate(vk_lshift)andkey_mask37.caserightkey38.res = getkeystate(vk_rshift)andkey_mask39.casebothleftandrightkeys40.res = (getkeystate(vk_lshift)andgetkeystate(vk_rshift)andkey_mask)41.caseelse42.res = ge
8、tkeystate(vbkeyshift)andkey_mask43.endselect44.45.isshiftkeydown =cbool(res)46.endfunction47.48.publicfunctioniscontrolkeydown(optionalleftorrightkeyaslong= leftkeyorrightkey)asboolean49.dimresaslong50.51.selectcaseleftorrightkey52.caseleftkey53.res = getkeystate(vk_lctrl)andkey_mask54.caserightkey5
9、5.res = getkeystate(vk_rctrl)andkey_mask56.casebothleftandrightkeys57.res = (getkeystate(vk_lctrl)andgetkeystate(vk_rctrl)andkey_mask)58.caseelse59.res = getkeystate(vbkeycontrol)andkey_mask60.endselect61.62.iscontrolkeydown =cbool(res)63.64.endfunction65.66.publicfunctionisaltkeydown(optionalleftor
10、rightkeyaslong= leftkeyorrightkey)asboolean67.dimresaslong68.69.selectcaseleftorrightkey70.caseleftkey71.res = getkeystate(vk_lalt)andkey_mask72.caserightkey73.res = getkeystate(vk_ralt)andkey_mask74.casebothleftandrightkeys75.res = (getkeystate(vk_lalt)andgetkeystate(vk_ralt)andkey_mask)76.caseelse
11、77.res = getkeystate(vbkeymenu)andkey_mask78.endselect79.80.isaltkeydown =cbool(res)81.82.endfunction下面代码是调用了上面函数的一个测试,我们可以从vba编辑器的调试窗口中看到相关控制键状态。01.subtest()02.application.ontime now + timeserial(0, 0, 2),proctest, ,true03.endsub04.05.subproctest()06.debug.printshift key: , _07.left: &cstr(isshiftk
12、eydown(leftkey), _08.right: &cstr(isshiftkeydown(rightkey), _09.either: &cstr(isshiftkeydown(leftkeyorrightkey), _10.both: &cstr(isshiftkeydown(bothleftandrightkeys)11.12.debug.printalt key: , _13.left: &cstr(isaltkeydown(leftkey), _14.right: &cstr(isaltkeydown(rightkey), _15.either: &cstr(isaltkeydown(leftkeyorrightkey), _16.both: &cstr(isaltkeydown(bothleftandrightkeys)17.18.debug.printctrl key: , _19.left: &cstr(iscontrolkeydown(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 前列腺炎的护理与保健
- 复古端午节总结汇报
- 四川省望子成龙学校2026届九年级英语第一学期期末调研试题含解析
- 山东省滨州惠民县联考2026届化学九年级第一学期期中经典模拟试题含解析
- 2026届内蒙古包头市第三十五中学九上化学期中考试模拟试题含解析
- 2025年高中美术教师资格考试面试试题与参考答案
- 2025年导游资格岗位从业基础知识考试题库与答案
- 2025年急救方面面试题目及答案
- 2026届贵州省7月普通高中学化学九上期中调研模拟试题含解析
- 2026届吉林省长春市德惠市大区化学九上期中经典模拟试题含解析
- 生物医药专利布局策略-洞察及研究
- 果树栽培技术课件视频
- 乡镇护路员管理制度
- 2025至2030中国海洋涂料市场发展趋势及前景预测分析报告
- 红领巾观察题目及答案
- 江西省第二届职业技能大赛智慧安防技术赛项-模块B-公开样题
- CJ/T 528-2018游泳池除湿热回收热泵
- 2023-2024学年江苏省苏州市高三(上)期初调研物理试题及答案
- T/CSWSL 021-2020饲料原料大豆酶解蛋白
- 《水利工程生产安全重大事故隐患清单指南》解读与培训
- 浙江省杭州市2025年八年级下学期语文期末试卷及答案
评论
0/150
提交评论