开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1793|回复: 9
收起左侧

[求助] 后台按键问题 抗干扰问题

[复制链接]
结帖率:98% (142/145)
发表于 2018-7-31 23:50:45 | 显示全部楼层 |阅读模式   重庆市重庆市
后台按键 绑定窗口句柄或者进程句柄 进程ID 线程ID之类的

能实现后台按键  但是我后台按键比较频繁 基本上200-500毫秒一次 一直按  这个频率调用call容易出错 换成后台按键就没问题

目前有个难题困扰我

就是后台不管是一个游戏 还是N个游戏按键

调用 大漠的 键盘_按下虚拟键码  或者 精易的 键盘_消息之类的  都能做到后台按键  实现效果

但是我按键频率高   游戏不管是后台还是前台的情况下   执行自动按键程序   我在前台浏览网页回复论坛 QQ微信聊天   我前台的打字按键盘都会部分传递进游戏  导致游戏打开了很多快捷键窗口(包裹 人物角色属性之类的)

这些命令基本都是调用了 windows的api实现的  论坛里面其他例程 我也用过  还是会干扰

请问怎么后台按键 不调用游戏快捷键call的情况下 实现后台按键1-6 F1-12   前台打字不干扰?最最最极端的情况下就是前台记事本里面按住某个键不放  也不会把这个按键传递进后台游戏。

这个真的困扰我很久了 希望各位帮忙解决。之前我测试过  执行后台按键以前  锁定游戏窗口的鼠标键盘  也就是鼠标键盘不能操作  但是后来发现无效 前台按键还是会传递进去。

下面是百度出来的我觉得有用的 可以参考下 但是不知道实现办法
--------------------------------------------------------------------------
先给API吧voidkeyPressed(KeyEvent e)
按下某个键时调用此方法。 voidkeyReleased(KeyEvent e)
释放某个键时调用此方法。 voidkeyTyped(KeyEvent e)
键入某个键时调用此方法。按照你上面说的,应该在keyPressed方法里面进行处理加锁,不处理相反的键,然后在keyReleased中再释放锁。
结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-1 00:46:55 | 显示全部楼层   重庆市重庆市
dm.后台_绑定窗口 (, 窗口句柄, “dx2”, “windows”, “windows”, 0)   能实现后台 但是会干扰

dm.后台_绑定窗口 (, 窗口句柄, “dx2”, “windows”, “dx.keypad.input.lock.api”, 0)     用api锁定键盘  不干扰 但是似乎是前台
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-1 03:12:48 | 显示全部楼层   重庆市重庆市
但是 dx模式 绑定以后 只能前台 不能后台 遮挡都不行 windows模式可以前后台会干扰

那些api函数之类的 都是dx的。。。。。。。。。
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-1 04:37:31 | 显示全部楼层   重庆市重庆市
  
DLL命令名返回值类型公开备 注
API_PostMessage整数型 定义后台按键
DLL库文件名:
user32
在DLL库中对应命令名:
PostMessageA
参数名类 型传址数组备 注
hwnd整数型接收消息的那个窗口的句柄。
wMsg整数型消息标识符 256?按下 257放开
wParam整数型具体由消息决定 键值 键盘码
lParam整数型具体由消息决定;  0
DLL命令名返回值类型公开备 注
API_SendMessage 
DLL库文件名:
 
在DLL库中对应命令名:
SendMessageA
参数名类 型传址数组备 注
窗口句柄整数型
标识整数型
消息1整数型
消息2整数型




这2个命令都可以后台按键  但是还是无法过滤掉干扰消息
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-1 20:58:36 | 显示全部楼层   重庆市重庆市
有人有解决办法吗
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-2 00:59:58 | 显示全部楼层   重庆市重庆市
大漠搞不定,
还是用postmessage或者sendmessage或者键盘消息 按键消息之类的把

尝试 键盘钩子   

游戏执行按键的时候  屏蔽掉这个键以外所有键-执行按键-解除屏蔽(这个时候消息执行完毕 游戏在后台 所有解除了也不会传递进去)  找到个很多年以前的源码  不过是全局的 再找找
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-3 17:01:49 | 显示全部楼层   重庆市重庆市
键盘钩子还是不行  键盘钩子不能放进循环内部 多次安装 卸载  只能放循环首部  但是有个问题  游戏在后台的时候  键盘钩子拦截生效  会让我前台也无法打字

我想要的就是后台按键  前台不管怎么按其他键 都不会传递进后台游戏
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-3 18:42:49 | 显示全部楼层   重庆市重庆市
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-3 19:13:23 | 显示全部楼层   重庆市重庆市
  
子程序名返回值类型公开备 注
窗口_锁住解锁逻辑型 在指定的窗口里允许或禁止所有鼠标及键盘输入
参数名类 型参考可空数组备 注
窗口句柄整数型要锁住或解锁的窗口句柄
类型逻辑型真 = 锁住;假 = 解锁;
返回 (EnableWindow (窗口句柄, 取反 (类型)))



这个命令也不行    开启锁定以后 确实这个窗口不能点鼠标按键盘了 但是在其他游戏窗口按键盘 或者记事本 网页地址栏按键盘打字 一样会传递进后台的游戏窗口

我是200-500毫秒执行一次按键
回复 支持 反对

使用道具 举报

结帖率:98% (142/145)

签到天数: 14 天

 楼主| 发表于 2018-8-12 17:38:42 | 显示全部楼层   重庆市重庆市
win10 大漠5.1以上版本
winxp win7  大漠3.1 5.1都行
已解决
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表