Re: [AHK-] 有辦法偵測CPU是否閒置嗎?

看板EzHotKey作者 (UndeadSion)時間16年前 (2008/11/08 12:25), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #195HIjfY (EzHotKey)
文章代碼(AID): #195HIjfY (EzHotKey)