簡體   English   中英

AHK中的基本應用-主回路和流量控制

[英]Basic app in AHK - main loop and flow control

我想用AHK編寫一個小型應用程序,但是在理解流控制和語法的基本知識時遇到了困難。 因此,基本的問題可以理解為-如何在AHK中編寫一個簡單的程序?

這是一個非常簡單的程序,必須使用鼠標右鍵切換標志“ pan_on”。 然后根據此值執行操作。

pan_on := false

Esc:: ExitApp

Rbutton:: 
    tooltip,  "button pressed"
    pan_on := true
return

Rbutton up:: 
    tooltip,  "released"
    pan_on := false
return

 if (pan_on = true)
{
    tooltip,  "XXXXXXXXEngage"
}

以“ Rbutton”行開頭的塊正常工作。 但是,問題在於帶有條件語句的最后一個塊永遠不會執行。 在最后一個塊或所有腳本周圍添加無限循環也無濟於事。

我最熟悉這樣的編程風格(此處使用Python語法):

pan_on = False
while True:
    pan_on = False
    if key_down[Esc]:
        break
    if key_down[Rbutton]:
        pan_on = True
    if key_up[Rbutton]:
        pan_on = False
    ...
    if pan_on:
        draw_something ()

因此,我想不出什么來編寫程序,但從這個意義上說,自動熱鍵似乎是“特殊的”東西,必須使用其他方法嗎? 在第一個AHK示例中,似乎“ Rbutton ::”始終處於就緒狀態,我認為它是一個無窮循環內的有條件的“ if key_down”,但我一定對此感到驚訝嗎?

那么,如何在不更改代碼樣式的情況下制作一個簡單的應用程序? AHK的主要回路在哪里? 控制流程如何工作,如何管理所運行部分代碼的入口點? 如果我只是在“ Rbutton ::”之后編寫所有內容,那么它可以工作,但不是編寫程序的方式,並且很難進一步開發邏輯。

就控制流而言,永遠不會到達您的if語句。 據我了解,解釋器首先讀取腳本頂部的AutoExec部分,該部分處理設置,然后對熱鍵和偽指令進行操作,然后逐行執行代碼,直到遇到Return。 您還需要循環代碼以連續檢查Value是否為true,否則只需檢查一次然后繼續即可。

pan_on := false

loop {
 if (pan_on = true)
    tooltip,  "XXXXXXXXEngage"
}

Esc:: ExitApp

Rbutton:: 
    tooltip,  "button pressed"
    pan_on := true
return

Rbutton up:: 
    tooltip,  "released"
    pan_on := false
return

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM