Re: [AHK-] 有辦法偵測CPU是否閒置嗎?
※ 引述《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
推
11/10 14:56, , 1F
11/10 14:56, 1F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
EzHotKey 近期熱門文章
PTT數位生活區 即時熱門文章