2013-08-31 124 views
1

我有一個腳本,用於輸入記錄在我們的系統中最初正常工作與MsgBox,但我添加了一個GUI來顯示記錄條目。現在腳本在第一條記錄後停止。循環,讀取後停止一個記錄與GUI(不循環)

在下面的例子中,我已經刪除了所有的操作和記錄行,以幫助更容易解析,但是我保留了所有重要的東西並測試了此版本的腳本。

Loop, read, C:\_AutoHotKey\AA_test.txt 
{ 
    StringSplit, LineArray, A_LoopReadLine, %A_Tab% 

    aaduedate := LineArray1 
    aauniqueid := LineArray2 
    aaprefix := LineArray3 
    aasequence := LineArray4 
    aadescript := LineArray5 
    aaelig  := LineArray6 

;------------------------------------------------------------------------------------- 
;Use these to test the file match in the Input File. 
;Remove surrounding comments and surround the rest of the script up to the last brace. 
    SendInput, Prefix: %aaprefix% {enter} 
    SendInput, Sequence: %aasequence% {enter} 
    SendInput, Description: %aadescript% {enter} 
    SendInput, Eligibility: %aaelig% {enter} 
    SendInput, ID Card: %aaidcard% {enter} 
;--------------------------------------------------------------------------------------- 

;Pop-up validation menu 
Gui, Add, Button, x22 y380 w100 h30 , &Submit 
Gui, Add, Button, x362 y380 w100 h30 , &Cancel 
Gui, Font, S14 CDefault, Verdana 
Gui, Add, Text, x152 y10 w210 h30 +Center, Is the entry correct? 
Gui, Font, S10 CDefault, Verdana 
Gui, Add, Text, x102 y40 w90 h20 , %aaprefix% 
Gui, Add, Text, x102 y70 w130 h20 , %aaelig% 
Gui, Add, Text, x312 y70 w30 h20 , %aadescript% 
Gui, Add, Text, x432 y70 w30 h20 , %aaidcard% 
Gui, Font, S8 CDefault, Verdana 
Gui, Add, Text, x132 y380 w230 h40 +Center, Click Submit/press S to continue. Click cancel to stop script. 
; Generated using SmartGUI Creator 4.0 
Gui, Show, x9 y250 h428 w480, Auto Action Validation 
Return 

ButtonCancel: 
ExitApp 

ButtonSubmit: 
Gui, Submit ; 
    MouseMove, 630,55 
    Sleep, 100 
    SendInput, {Click 630,55} 
    SendInput ^S 

Return 

} 

這些按鈕可以工作,點擊提交將發送MouseMove和SendInput。但在此之後,它會停止並且不會加載文本文件中的下一條記錄。

在此先感謝!

回答

0

你在循環中有一個返回命令。

這退出程序

看到這個例子。 該循環應運行5次,但返回 命令在第一次運行後停止。

Loop, 5 
{ 
    msgbox, %A_Index% 
    return 
} 
+0

這種編程方法存在的問題是,如果您遺漏了 * return *命令,則循環不會暫停。所以這也行不通。更好的方法是編寫一個函數 ,它只讀取列表中的下一個項目並鍵入它。然後,您可以將該GUI從循環中打開並在每次確認輸入時調用此函數。這有點棘手。如果您是初學者,如果您在循環中打開帶有「是/否」按鈕的消息框,則可能會獲得更多成功。 – 576i

+0

啊。射擊。那麼,我是一個初學者,但是,我還需要有記錄顯示供用戶驗證。所以,它看起來像我將學習如何將GUI退出循環。 謝謝! (如果您有任何提示,我應該在幫助中尋求幫助,這將不勝感激。) – user2734945

+0

我已經想出瞭如何使這項工作,並仍然獲得顯示記錄的GUI。我將提交和取消按鈕從GUI中取出,並將MsgBox帶回。如果MsgBox評估爲yes,則會銷燬GUI。 我的下一個評論中有代碼,還有一些小東西可以將消息框移開。 – user2734945

0

我能得到這個從GUI刪除提交按鈕,將它移動到一個MsgBox工作。

圖形用戶界面基本上是一樣的,但提交和取消行已被刪除以及後面的返回和所有邏輯。

接下來,添加一個MsgBox來確認數據。這現在使用GUI來顯示記錄的內容和MsgBox以確認並移動到下一個記錄。

另外,我偷了一些代碼(並且不太瞭解),它移動了MsgBox,以便它不會阻止接收應用程序中的數據輸入屏幕。

下面是新的代碼,經過桂秀,X9取代一切......

OnMessage(0x44, "WM_COMMNOTIFY") 
MsgBox 4, AA Entry, Would you like to continue? (press Yes or No) 

WM_COMMNOTIFY(wParam) { 
    if (wParam = 1027) { ; AHK_DIALOG 
     Process, Exist 
       DetectHiddenWindows, On 
     if WinExist("ahk_class #32770 ahk_pid " . ErrorLevel) { 
      WinGetPos,,, w 
      WinMove, 90, 650 
     } 
    } 
    } 
;If the user responds yes, then close the Gui (Destroy) and enter the record 
IfMsgBox Yes 
    { 
     Gui destroy 
     Sleep, 100 
} 
    else 
     ExitApp 

} 

謝謝,我希望這是有益的人。