| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 707 人关注过本帖
标题:请问VB怎么判断物理按键的状态
只看楼主 加入收藏
hqb2015ok
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-4-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
请问VB怎么判断物理按键的状态
请问VB怎么判断物理按键的状态 虚拟按键不判断
2015-04-16 10:41
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:20 
vb有keydown、keypress keyup事件。
也可以了解API
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

大开眼界
2015-04-16 10:47
hqb2015ok
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-4-16
收藏
得分:0 
这个API是判断虚拟码
2015-04-17 14:02
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 3楼 hqb2015ok
你可以自己试试
GetAsyncKeyState 不响应虚拟键盘的按键

大开眼界
2015-04-17 15:05
hqb2015ok
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-4-16
收藏
得分:0 
这个虚拟 我是指用模拟按键软件按的键  比如按键精灵之类的  我试过了 用他模拟按下去一个键 GetAsyncKeyState  也会判断是按下的状态
2015-04-17 16:34
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 5楼 hqb2015ok
我没用按键精灵,只用了XP自带的虚拟键盘测试GetAsyncKeyState,程序只对硬键盘响应。估计不乐观。

按键精灵利用keybd_event模拟键盘消息,如果扫描码是零。你可以检测
struct tagKBDLLHOOKSTRUCT {
  DWORD     vkCode;
  DWORD     scanCode;
  DWORD     flags;
  DWORD     time;
  ULONG_PTR dwExtraInfo;
} KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT;
中的scancode来判断是否是按键精灵发出的消息。


Raw Input API绝对是根本解决方案,参见https://msdn.(v=vs.85).aspx
这个应该花时间琢磨琢磨。
周一有时间可以帮你试试。
...
用Raw Input试了按键精灵9,无效。这个按键精灵根本不是发WM_KEYDONW/UP来模拟按键。RAW INPUT的接收的WM_INPUT消息也无法屏蔽掉按键精灵。刚看到http://www. 模拟程序可以向更底层的向端口写数据。我这儿是无解了。要不针对商业应用开发出来的保护机制就不值价了。

[ 本帖最后由 lianyicq 于 2015-4-21 16:18 编辑 ]

大开眼界
2015-04-18 09:55
快速回复:请问VB怎么判断物理按键的状态
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021301 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved