我正在研究一個小的宏記錄/重放工具,它可以自動化我們擁有的一些非常古老的Visual Basic 6 GUI。爲此,我通過名稱來識別控件(即控件的name
屬性的值,即)。如何獲得給定其HWND的Visual Basic控件的名稱?
該工具的一部分需要根據HWND來確定控件的名稱。對於使用VB.NET完成的較新的Visual Basic應用程序,我可以使用WM_GETCONTROLNAME窗口消息。這很好地工作。
但是,此消息不被舊窗口所理解。有沒有什麼辦法來控制Visual Basic 6應用程序?一個不需要在GUI過程中的解決方案將是可取的,但如果我有一個解決方案只能在GUI過程中使用,那麼這也是可以接受的(因爲我可以自己做注射)。
UPDATE:有一件事我只是想,這個溫和的成功:我用AccessibleObjectFromWindow檢查,顯示給定的HWND對象的IAccessible接口的實現。如果我得到一個實現(似乎許多[所有?] Visual Basic控件實現此接口),我使用accName屬性讀出「可訪問的名稱」。有時候這會產生一個有用的字符串,但通常不會。
這些都是虔誠的建議,謝謝!現在看來我需要掛鉤進程(我可以這樣做),然後直接訪問Form對象。我不知道該怎麼做,但幾個月前已經做了類似的事情,所以它可能會解決。 – 2010-07-30 08:17:28