TC官方合作论坛

 找回密码
 立即注册
查看: 2561|回复: 3

[问题] 监视热键、超级延时用TC怎么写?

[复制链接]
发表于 2016-12-26 01:08:20 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 a145356 于 2016-12-26 01:10 编辑
  1. .版本 2
  2. .支持库 EThread

  3. .程序集 窗口程序集_启动窗口

  4. .子程序 __启动窗口_创建完毕

  5. 启动线程 (&监视热键线程, , )

  6. .子程序 响应子程序

  7. 信息框 (“111”, 0, , )

  8. .子程序 监视热键线程

  9. 热键监视 (#回车键, &响应子程序)

  10. .子程序 热键监视, , 公开
  11. .参数 欲监视热键的键代码, 整数型, , 欲监视热键的键代码
  12. .参数 反应子程序, 子程序指针, , 反应子程序
  13. .局部变量 A

  14. .循环判断首 ()
  15.     A = GetAsyncKeyState (欲监视热键的键代码)
  16.     .如果真 (A = -32767)
  17.         启动线程 (反应子程序, , )
  18.     .如果真结束
  19.     超级延时 (1)
  20. .循环判断尾 (欲监视热键的键代码 ≠ -9999999)

  21. .子程序 超级延时, , 公开, 高精度延时,cpu占用低,窗口不卡死,一次最大可延时几年 (无返回值)
  22. .参数 延时间隔, 整数型, , 1000微秒 = 1毫秒 ; 1000毫秒 = 1秒
  23. .参数 延时单位, 整数型, 可空, 可空:毫秒  0 毫秒  1 微秒  2 秒  3 分  4 小时  5 天
  24. .局部变量 hTimer, 整数型
  25. .局部变量 int64, LARGE_INTEGER
  26. .局部变量 计次, 整数型

  27. .判断开始 (延时单位 = 1)
  28.     int64.QuadPart = -10 × 延时间隔
  29.     hTimer = CreateWaitableTimerA (0, 假, 0)
  30.     SetWaitableTimer (hTimer, int64, 0, 0, 0, 假)
  31.     .判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, #INFINITE, #QS_ALLINPUT) ≠ #WAIT_OBJECT_0)
  32.         处理事件 ()
  33.     .判断循环尾 ()
  34.     CloseHandle (hTimer)
  35.     返回 ()
  36. .判断 (延时单位 = 0)
  37.     延时单位 = 1
  38. .判断 (延时单位 = 2)
  39.     延时单位 = 1000
  40. .判断 (延时单位 = 3)
  41.     延时单位 = 1000 × 60
  42. .判断 (延时单位 = 4)
  43.     延时单位 = 1000 × 60 × 60
  44. .判断 (延时单位 = 5)
  45.     延时单位 = 1000 × 60 × 60 × 24
  46. .默认

  47. .判断结束
  48. .计次循环首 (延时单位, 计次)
  49.     int64.QuadPart = -10 × 延时间隔 × 1000
  50.     hTimer = CreateWaitableTimerA (0, 假, 0)
  51.     SetWaitableTimer (hTimer, int64, 0, 0, 0, 假)
  52.     .判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, #INFINITE, #QS_ALLINPUT) ≠ #WAIT_OBJECT_0)
  53.         处理事件 ()
  54.     .判断循环尾 ()
  55.     CloseHandle (hTimer)
  56. .计次循环尾 ()
复制代码

监视热键

监视热键


超级延时

超级延时


这两个功能怎么用TC语言写出来?
就是纯粹用TC和系统的API。
监视热键&超级延时.e (5.82 KB, 下载次数: 375)
回复

使用道具 举报

发表于 2016-12-26 10:50:08 来自手机 | 显示全部楼层
tc怎样检测 某键位的状态。

tc怎样检测 一个按键的状态。

tc怎样检测 多个按键的状态。

//
while(true)

var retctrl = dllcall("user32.dll","long", "GetAsyncKeyState","long",17)

var retx = dllcall("user32.dll","long", "GetAsyncKeyState","long",88)

if(retctrl != 0 && retx != 0 )

traceprint("双键都已经按下。")

sleep(30)

end

sleep(100)

end
回复 支持 反对

使用道具 举报

发表于 2016-12-26 10:50:19 来自手机 | 显示全部楼层
dllcall()
回复

使用道具 举报

 楼主| 发表于 2016-12-26 13:30:22 | 显示全部楼层
剑仙十号 发表于 2016-12-26 10:50
tc怎样检测 某键位的状态。

tc怎样检测 一个按键的状态。

还有超级延时怎么写?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-10-1 06:03 , Processed in 0.050196 second(s), 26 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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