作者UndeadSion (UndeadSion)
看板EzHotKey
标题Re: [AHK-] 有办法侦测CPU是否闲置吗?
时间Sat Nov 8 12:25:16 2008
※ 引述《ShineX (........)》之铭言:
: 虽然我在网路上找到了范例, 但现在有遇到一个问题,
: 想请问一下面这段判断式...
: If A_TimeIdlePhysical>=%idleduration%
: {
: ...
: }
: 这个判断式中的 A_TimeIdlePhysical,
: 应该是系统没有收到任何输入(滑鼠和键盘的输入都"忽略")的时间吧?
: 但是我发现只有我键盘或滑鼠有动作, A_TimeIdlePhysical就会reset
: 我有印出来看过...
: p.s. A_TimeIdle 则是"不忽略"滑鼠和键盘的输入
: 请问这是啥麽问题, 谢谢!!!
先跑一下这段 Script 比较容易说明
---------------->8---------------->8---------------- 请沿此线剪下 ----
#InstallKeybdHook
#InstallMouseHook
CoordMode, ToolTip
TestKeyboard := True
Loop
{
ToolTip, % "TimeIdle = `t" . A_TimeIdle . "`n"
. "TimeIdlePhysical = `t" . A_TimeIdlePhysical, 0, 0
; 若 A_TimeIdle 大於 5 秒
If A_TimeIdle >= 5000
{
; 交替送出键盘或滑鼠命令
If TestKeyboard
Send, {ScrollLock}
Else
MouseMove, 0, 0, 0, R
TestKeyboard := !TestKeyboard
}
Sleep, 100
}
---------------->8---------------->8---------------- 请沿此线剪下 ----
■ 状况一
每当 A_TimeIdle 大於 5 秒时,Script 送出的键盘或滑鼠模拟输入会让它归零
,A_TimeIdlePhysical 则不受影响,如果使用者以实体键盘或滑鼠装置来输入
,A_TimeIdle 与 A_TimeIdlePhysical 两者皆归零
■ 状况二
注解前两行,则 A_TimeIdlePhysical 等於 A_TimeIdle
■ 状况三
取消前两行注解,回圈前加上一行「BlockInput, On」
此时使用者的实体键盘或滑鼠装置皆处於无法输入的状态,移动滑鼠或按下滑鼠
按钮,A_TimeIdle 与 A_TimeIdlePhysical 都不受影响,但是按压键盘时两者
皆会归零
(请按 Ctrl + Alt + Del 解除 BlockInput 状态)
若未按压实体键盘或使用滑鼠装置,A_TimeIdle 与 A_TimeIdlePhysical 同於
状况一
由以上可知「
#InstallKeybdHook」与「
#InstallMouseHook」这两行命令会影响
A_TimeIdlePhysical 是否忽略程式送出的键盘或滑鼠模拟输入,也就是说,在
启用 Keyboard/Mouse Hook 的情况下,A_TimeIdlePhysical 会忽略程式的键盘
或滑鼠输入 (不限於 AutoHotkey)
使用 AutoHotkey 需注意的是,Keyboard/Mouse Hook 启用与否跟 Script 内容
有关,没使用上述命令并不代表一定没有启用 Keyboard/Mouse Hook,例如以下
的情况会强制启用 Keyboard Hook
1. 使用 Hotstrings
2. 设置需要使用 Keyboard Hook 的快速键
3. 使用 SetNumLockState, AlwaysOn (或 AlwaysOff) 命令
(SetCapsLockState 及 SetScrollLockState 亦同)
4. 使用 Input 命令
如果要确认 Script 是否启用 Keyboard/Mouse Hook,可以在 AutoHotkey 视窗
的 [View]→[Key history and script info] 里查询
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.159.124
1F:推 ShineX:超棒的讲解, 马上来试试, 谢谢!!! 11/10 14:56