[/quote
]感谢,好使。有3个疑问:
1、这样好像要一直开着时钟,而为了能够及时响应自定义的快捷键,时钟估计得设置到500ms左右,那会不会很占用系统zy,或者会不会时间长了可能内存泄露奔溃什么的。
2、这个原理好像是把外部的线程附加到自己身上,然后通过getfocus获取,但还是不太明白,如果可以,能否给讲一下,谢谢。
3、getfocus好像是获取的所有能接受焦点的控件,是否有只接受可输入型控件的函数,当然这个到没什么影响,反正都要走一遍时钟里的过程。
下面是我的代码,请指教:
[e=1
].版本 2
窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 数组 | 备 注 |
热键 | 整数型 | |
n | 当前句柄 | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
SelfThreadId | 整数型 | | |
ForeThreadId | 整数型 | | |
wnd | 整数型 | | |
NULL | 整数型 | | |
wnd =
GetForegroundWindow () SelfThreadId =
GetCurrentThreadId () ForeThreadId =
GetWindowThreadProcessId (wnd, NULL
) AttachThreadInput (ForeThreadId, SelfThreadId,
真) n =
GetFocus () AttachThreadInput (ForeThreadId, SelfThreadId,
假) 时钟1.时钟周期 = 500
时钟1.时钟周期 = 0
|
_标签1_反馈事件 | 整数型 | |
|
参数一 | 整数型 | | | |
参数二 | 整数型 | | | |
如果真 (参数一 = 热键
)文本_投递 (n, 编辑框5.内容
)热键 =
zc热键 (取窗口句柄 (), 标签1.
取窗口句柄 (), 1,
#Q键 )
感谢,好使。有3个疑问:
1、这样好像要一直开着时钟,而为了能够及时响应自定义的快捷键,时钟估计得设置到500ms左右,那会不会很占用系统zy,或者会不会时间长了可能内存泄露奔溃什么的。
2、这个原理好像是把外部的线程附加到自己身上,然后通过getfocus获取,但还是不太明白,如果可以,能否给讲一下,谢谢。
3、getfocus好像是获取的所有能接受焦点的控件,是否有只接受可输入型控件的函数,当然这个到没什么影响,反正都要走一遍时钟里的过程。
下面是我的代码,请指教:
[e=1].版本 2
.支持库 shellEx
.程序集 窗口程序集_启动窗口
.程序集变量 热键, 整数型
.程序集变量 n, 当前句柄
.子程序 _时钟1_周期事件
.局部变量 SelfThreadId, 整数型
.局部变量 ForeThreadId, 整数型
.局部变量 wnd, 整数型
.局部变量 NULL, 整数型
wnd = GetForegroundWindow () ' ;//获得当前激活的窗口句柄
SelfThreadId = GetCurrentThreadId () ' ;//获取本身的线程ID
ForeThreadId = GetWindowThreadProcessId (wnd, NULL) ' ;//根据窗口句柄获取线程ID
AttachThreadInput (ForeThreadId, SelfThreadId, 真) ' ;//附加线程
n = GetFocus ()
' 调试输出 (n) ' ;//获取具有输入焦点的窗口句柄
' 编辑框4.加入文本 (到文本 (n) + #换行符)
AttachThreadInput (ForeThreadId, SelfThreadId, 假) ' ;//取消附加的线程
.子程序 _按钮1_被单击
时钟1.时钟周期 = 500
.子程序 _按钮2_被单击
时钟1.时钟周期 = 0
.子程序 _标签1_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
.如果真 (参数一 = 热键)
文本_投递 (n, 编辑框5.内容)
.如果真结束
.子程序 __启动窗口_创建完毕
热键 = zc热键 (取窗口句柄 (), 标签1.取窗口句柄 (), 1, #Q键)