TC官方合作论坛

标题: 求一款能像DM一样获取某个键状态的插件 [打印本页]

作者: hommilist    时间: 2014-8-7 23:46
标题: 求一款能像DM一样获取某个键状态的插件
求一款能像DM一样获取某个键状态的插件,例如在大漠中可以调用:
dm.GetKeyState(keyCode)
keyCode是虚拟键码,返回true表示该键处于按下状态,返回 false表示该键处于弹起状态
但是处于某种原因不能使用dm,也看了大兵有一个getmousekey的函数,但是不合适,大兵这个函数
是返回被按下的按键的键码,而且变动很大,当多个键被按下,返回不准确,求介绍一款有跟大漠一样的
这个函数的插件,谢谢!
作者: b44412545    时间: 2014-8-8 00:00
用dllcall吧
作者: cylhb    时间: 2014-8-8 00:04
API。GetAsyncKeyState

功能 Ctrl是否按下()
    如果(dllcall("user32.dll", "int", "GetAsyncKeyState", "long", 17) ==-32767)
        返回 真
    否则
        返回 假
    如果结束
功能结束
作者: hommilist    时间: 2014-8-8 11:14
cylhb 发表于 2014-8-8 00:04
API。GetAsyncKeyState

功能 Ctrl是否按下()

我试过,用GetKeyState的症状如下:
按(注意是按,不是keydown,是keypress)一下键,键已经被弹起,但是调用GetKeyState返回为=1
而且一直是=1,说明是按下状态,实际上没有按下,直到第二次keypress这个键后才返回=0
GetAsyncKeyState 的症状如下:
keypress一下键,键被弹起(已经处于弹起状态),调用该函数返回=1,再次调用该函数返回=0

两函数都不能正确返回结果
作者: tcgaoshou    时间: 2014-8-8 12:25
hommilist 发表于 2014-8-8 11:14
我试过,用GetKeyState的症状如下:
按(注意是按,不是keydown,是keypress)一下键,键已经被弹起,但是调 ...
  1. 功能 开始_点击()
  2.    
  3.     如果(dllcall("user32.dll", "int", "GetAsyncKeyState", "long", 89) ==-32767)
  4.         辅助.消息框("123")
  5.         返回 真
  6.     否则
  7.         辅助.消息框("456")
  8.         返回 假
  9.     如果结束
  10.    
  11.    
  12. 功能结束
复制代码


当按下Y键,点击开始,弹出是456.当按住Y键,点击开始,弹出的是123.你试试以下。
作者: cylhb    时间: 2014-8-8 19:28
-.-按下Y键再点击开始,说明你松开了Y键,弹出456不对?
按住Y键弹出123,这不说明白Y键处于按住状态???
一个是松开,一个是按住,这不就知道Y键此时的状态了?
不明白你想要的是什么东西。。
作者: simmytong    时间: 2014-8-8 23:07
其实消息路由也可以实现这个功能, 主界面放个标签0, 可以随时看到key的状态. 如果用选择语句,几乎所有key都可以随时判断.
功能 te_消息路由(句柄,消息,w参数,l参数,时间,x坐标,y坐标)
    如果(w参数==65)//A key keycode
        如果(消息==256)
            标签.设置文本("标签0","A键按下")
        如果结束
        如果(消息==257)
            标签.设置文本("标签0","A键弹起")
        如果结束
    如果结束
   
    如果(w参数==66)//B key keycode
        如果(消息==256)
            标签.设置文本("标签0","B键按下")
        如果结束
        如果(消息==257)
            标签.设置文本("标签0","B键弹起")
        如果结束   
    如果结束

功能结束
作者: slz336    时间: 2014-8-26 09:13
学习好辛苦啊




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1