clswindow是vb6中的一個類,主要用來訪問Windows窗口及內部控件,可以改寫和獲取,用的最多的是填寫某個窗口中的輸入框,例如用來做登錄器,填寫表單。關於該類更多介紹可以參考:https://blog.csdn.net/sysdzw/article/details/9083313
我們經常會遇到一個窗口中有多個輸入框,且輸入框的類名一樣,那麼該如何區分填寫呢?
要解決這個問題需要先明白一個原則,多個輸入框用遍歷控件的方法訪問,不管訪問多少次,它的先後順序是一致的,除非做軟件的故意將每次顯示時控件順序打亂,例如動態生成的控件隨意擺放位置,一般這個情況下極少,目前還沒遇到過。這樣就可以根據次序來進行填寫。
那麼我們的思路是這樣的:1.測試輸入框的次序, 2.根據次序填寫到目標輸入框
測試次序的代碼:
Dim i%
Dim w As New clsWindow
w.GetWindowByTitleEx "微標電腦收發存統計系統", 1
i = 0
Do
i = i + 1
If Not w.SetElementTextByClassName("ThunderRT6TextBox", "次序" & i, i) Then Exit Do
Loop
MsgBox "次序填寫完畢!"
這樣子的話我們就可以區分輸入框了,例如窗口裏有5個輸入框,你要填寫的輸入框通過上面的測試是“次序4”,想把它填寫爲xxxxxx,那麼你就可以編寫代碼:
w.SetElementTextByClassName "ThunderRT6TextBox", "xxxxxx", 4
同樣的如果要讀取第“次序4”的輸入框的內容,用下面代碼:
MsgBox w.GetElementTextByClassName("ThunderRT6TextBox", 4)
關於clswindow類的介紹,請參考:https://blog.csdn.net/sysdzw/article/details/9083313