2014-11-04 64 views
2

我在Windows 7上遇到了AutoIT的ControlSend函數的一個奇怪的問題,所以我希望有人可以提供幫助。AutoIT ControlSend修改器不一致

我寫過FUSE文件系統,它通過Samba與Windows共享。我試圖使用AutoIT在各種不同的應用程序上使用AutoIT在文件系統上編寫和修改文件,從而自動測試Windows上的文件系統。

當我第一次啓動測試時,我正在使用「發送」方法發送擊鍵,但是我發現其他應用程序偶爾會竊取焦點,我的測試會被磨損。我希望使用ControlSend可以讓我的測試繼續進行,即使焦點被盜。我遇到的問題是,有時修改鍵(如Shift和Control)不會按原樣發送。

例如,如果我用

ControlSend("Open", "", "Edit1", "Z:\test.txt") 

設置在打開的對話框的路徑,我偶爾會看到的文字遇到「Z; | test.txt的」,顯然具有反轉shift鍵爲幾個字符。

在另一種情況下,如果我送撫養打開對話框,AutoIt的簡單類型的字母「o的

ControlSend($hWnd, "", "Edit1", "^o") 

派「CTRL + O」的記事本窗口,我偶爾會發現,而不是「放入記事本文本字段中。

我需要能夠設置這些腳本並讓它們在不受監視的情況下繼續運行,因此偶爾輸入明確不是它應該發送的字符會使其成爲不可行的解決方案。

有什麼我可以做的,使它更正確地發送正確的字符與正確的修飾符?

+0

一點點,但是我遇到了同樣的問題,最終找到了解決方案。我已經寫在這裏:http://stackoverflow.com/questions/42588904/controlsend-randomly-sending-wrong-characters-modified-and-unmodified – 2017-03-03 21:44:25

回答

2

AutoIt以我的經驗有時候會擾亂髮送鍵,但只有當它們快速發送時纔會發送。

ControlSend函數有一個標誌,緊跟在你希望它發送的字符串之後,這使得AutoIt能夠發送密鑰。

ControlSend ("title", "text", controlID, "string" [, flag = 0])

標誌變化 「鑰匙」 的處理方式:

0 =(默認)文本中包含特殊字符,如+,以指示SHIFT和LEFT {}指示左箭頭。

1 =鍵發送原

對於CTRL + O問題,儘量做到這樣的:

ControlSend ("title", "", 0, "^{o}") 

希望這有助於後期:)

+0

這是說,設置標誌= 1將防止案件錯誤我間歇性地看到了?隨機案例的變化似乎並沒有圍繞特殊字符,他們似乎只是在我的文本中發生案例變化時纔會出現。我會試着看看'^ {0}'是否比'^ 0'好。 – AusIV 2014-11-06 19:47:11