簡體   English   中英

AHK熱鍵中間的分支鍵等待

[英]AHK Branching KeyWaits in Middle of Hotkey

我在醫生辦公室工作,負責計費。 為完成這項工作而編寫的程序非常基礎,並且絕對充滿錯誤,因此我重復了很多代碼以確保它們能正常工作。 我使用了兩個程序,一個用於帳單程序,一個用於圖表程序。 現在,我的熱鍵從帳單側獲取患者的出生日期和病歷號,轉到圖表側,根據這兩件事搜索患者(通常MRN就足夠了,但史詩級的打擊,所以這還不夠)選擇患者,單擊“圖表檢查”,然后等待我選擇服務日期。 左鍵單擊時,它會跳回到帳單側,這樣我就可以向其中復制信息。 問題是,有時患者沒有出現,我必須記錄下來。 如果未顯示,則沒有圖表可單擊,我必須單擊其他地方以仔細檢查它們是否未顯示。 我需要keywait的一種分支類型,如果單擊該分支,則單擊該選項卡,它會跳到開票側,或者如果我按A或類似的東西,它將單擊約會,然后過去,然后又跳回到開票並單擊“已鍵入便箋”。 除了分支部分之外,我還可以管理其他所有內容。 Getkeystate語句似乎不起作用,並且我不能將if語句用於鍵等待(顯然)。

!D::
BlockInput, MouseMoveOff
sleep 100
Winactivate, Hyperspace
sleep 100
sendinput ^w
sleep 300
winactivate, Form billing
sleep 300
BlockInput, MouseMove
mouseclick,, 400, 70
BlockInput, MouseMove
click
sleep 200
sendinput ^c
sleep 400
dob:=Clipboard
sleep 400
BlockInput, MouseMove
mouseclick,, 385, 85
BlockInput, MouseMove
click
sleep 200
sendinput ^c
WinActivate, Hyperspace
sleep 400
sendinput ^3
sleep 400
sendinput ^v
sleep 400
BlockInput, MouseMove
mouseclick,, 200, 145
sleep 400
Clipboard:=dob
sleep 400
StringTrimLeft, dobyear, dob, 6
sleep 50
dobmathd:=A_YYYY-dobyear
sleep 50
StringTrimRight, dobmo, dob, 8
sleep 50
StringTrimRight, dobd, dob, 5
sleep 50
StringTrimLeft, dobday, dobd, 3
sleep 50
if (dobmo >= A_MM) and (dobday >= A_DD)
{
dobmathd--
}
sleep 50
sendinput ^v
sleep 200
sendinput {Enter}
sleep 200
sendinput {Enter}
sleep 1700
BlockInput, MouseMove
mouseclick,, 85, 235
sleep 300
BlockInput, MouseMoveOff
;if (character = a)
;{
;BlockInput, MouseMove
;mouseclick,, 325, 40
;sleep 200
;mouseclick,, 60, 285
;click
;sleep 400
;mouseclick,, 240, 435
;sleep 2000
;winactivate, Form billing
;BlockInput, MouseMoveOff
;return
;}
;if (
tooltip,%dobmathd% Years old, 415, 70
keywait, LButton, D, T200
sleep 200
winactivate, Form billing
return

評論的部分是我的最后一次嘗試,但是我一直在尋找一個真正的想法嘗試一段時間。 任何幫助表示贊賞!

編輯:也許是“如果我單擊此處執行此操作,或者如果我單擊此處執行此操作”,則該聲明將起作用。 我可以獲取“圖表查看”窗口和約會工具欄按鈕的尺寸。 我一直在嘗試將其用於其他任務,但它可能在這里起作用。 幫助也將不勝感激!

編輯:@Bob,實際上,很抱歉收到您的延遲答復,我發現用很少長度的幾個keywait循環一個小語句對我來說很好。 我將在下面粘貼我的代碼。 這只是一個片段,所以它不是完整的代碼。

SendInput, {Enter}
Sleep, 1800
BlockInput, MouseMove
MouseClick,, 85, 235
Sleep, 300
BlockInput, MouseMoveOff
Sleep, 20
Loop
{
    KeyWait, LButton, D, T0.02 ;I've picked a chart, meaning they showed up for their appointment
    If !ErrorLevel
    {
        Sleep, 400
        BlockInput, MouseMoveOff
        WinActivate, Form CMP
        Return
    }
    KeyWait, Escape, D, T0.02
    If !ErrorLevel
        Return
    KeyWait, ., D, T0.02 ;They do not appear to have shown up for their appointment, so check the appointment tab
    If !ErrorLevel
    {
        BlockInput, MouseMove
        MouseClick,, 315, 40
        Sleep, 400
        MouseClick,, 100, 285
        Sleep, 1000
        MouseClick,, 270, 440
        Sleep, 300
        BlockInput, MouseMoveOff
        Loop
        {
            KeyWait, Y, D, T0.02 ;They did not show up for their appointment. Bill appropriately.
            If !ErrorLevel
            {
                BlockInput, MouseMove
                WinActivate, Form CMP
                Sleep, 200
                MouseClick,, 210, 260
                Sleep, 200
                MouseClick,, 100, 400
                Sleep, 200
                SendInput, No Show
                Sleep, 200
                WinActivate, Hyperspace
                Sleep, 500
                MouseClick,, 85, 235
                Sleep 400
                WinActivate, Form CMP
                Sleep, 300
                BlockInput, MouseMoveOff
                Return
            }
            KeyWait, N, D, T0.02 ;Don't see a no show, re-check chart review.
            If !ErrorLevel
            {
                BlockInput, MouseMove
                MouseClick,, 85, 235
                Sleep, 500
                BlockInput, MouseMoveOff
                KeyWait, LButton, D
                Sleep, 400
                WinActivate, Form CMP
                BlockInput, MouseMoveOff                    
                Return
            }
            KeyWait, Escape, D, T0.02
            If !ErrorLevel
                Return
        }
    }
}

我不能在鍵等待中使用if語句

有一種方法可以用L1V “濫用” Input命令(最好也Input I )作為(替代) KeyWait選項。 那應該適合您的使用情況。

(...)
Input,var,L1IV ; will act as KeyWait
if (var="a") {
    foo:=Round(Sqrt(1764))
    TrayTip,,The number is %foo%
}
else if (var="s")
  MsgBox Sssnaaakess 
(...)

暫無
暫無

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

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