简体   繁体   English

AHK 循环 CPU 使用率过高

[英]AHK loop High CPU Usage

I'm running an Autohotkey script that auto capitalizes the first character of a sentence (for example in Texstudio or Chrome).我正在运行一个自动大写句子的第一个字符的 Autohotkey 脚本(例如在 Texstudio 或 Chrome 中)。 The script (specifically the loop I guess) sometime causes 30–40% of CPU.脚本(特别是我猜的循环)有时会占用 30-40% 的 CPU。 Therefore, I am wondering if there is a possibility to optimize the code (maybe without using loop?) to reduce the CPU usage.因此,我想知道是否有可能优化代码(可能不使用循环?)以减少 CPU 使用率。 Thanks in advance.提前致谢。 Here is the code:这是代码:

#SingleInstance force
#NoEnv
SetBatchLines -1

Loop {
if WinActive("ahk_exe texstudio.exe") or WinActive("ahk_exe chrome.exe")
Input key, I L1 M V,{Esc}{BS}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Tab}
StringUpper key, key

If InStr(ErrorLevel,"EndKey")

state =

Else If InStr(".!?",key)

state = 1

Else If InStr("`t `n",key) {

If state = 1

state = 2

} Else {

If state = 2

Send {BS}{%key%}

state =

}

}

Return 

SetTimer consumes much less CPU because of the period.由于周期, SetTimer消耗的 CPU 少得多。

#SingleInstance force
#NoEnv
#Persistent
; SetBatchLines -1

; create a group of the programs in which you want auto-capitalize
GroupAdd, auto_capitalize_group, ahk_exe texstudio.exe
GroupAdd, auto_capitalize_group, ahk_exe chrome.exe

SetTimer, auto_capitalize, 300 ; check every 300 ms
Return 

auto_capitalize: 
if !WinActive("ahk_group auto_capitalize_group")
    return  ; do nothing
; otherwise:
Input key, I L1 M V,{Esc}{BS}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Tab}
StringUpper key, key
If InStr(ErrorLevel,"EndKey")
    state =
Else If InStr(".!?",key)
    state = 1
Else If InStr("`t `n",key) 
{
    If state = 1
        state = 2
} 
Else 
{
    If state = 2
        Send {BS}{%key%}
    state =
}
Return

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM