2012-04-26 64 views
1

我需要做一個對象瀏覽器/操縱器,類似於TestComplete中可用的對象瀏覽器/操縱器,即列出任何正在運行的外部應用程序中的所有對象及其屬性,並且能夠修改它們屬性,所有這些在運行期間,當然。
儘管MSAA/IAccessible可以讀取對象,但據我所知,它只能返回可見對象,而不會改變它們的屬性。
使用WinAPI我無法讀取沒有手柄的對象,例如標籤。在運行時應用程序對象瀏覽和操作

理想情況下,我希望在Delphi中完成,但任何其他語言的建議是可以接受的。什麼,我希望能夠做到

實例(這是在TestComplete完成):

TestComplete Object Browser TestComplete Object Browser 2

+0

可能的重複[什麼將列出現有的對象讀取和更改其屬性的理想方式?](http://stackoverflow.com/questions/10096071/what-would-be-an-ideal-way-到列表的現有對象對讀取和改變,其螺旋槳) – Helen 2012-04-27 08:22:36

回答

1

的任務是不容易的。如果你想這樣做,你需要使用特定的方法來獲取你想要使用的每個應用程序框架(.NET,MFC,VCL等)的數據。雖然其中一些方法非常簡單(例如,針對.NET和Java的Reflection),但其他一些方法可能更復雜,並且不像VCL那樣記錄。 TestComplete將自己的鉤子加載到目標進程內存中,並通過這些模塊檢索有關此應用程序的信息。

此外,據我所知,TestComplete可以讀取測試應用程序的各種類型的調試信息,並在暴露對象和其成員時使用它。

使用IAccessible和Win API是一種更簡單的方法,但在某些情況下效果不佳。您提到您無法使用Win API從標籤獲取任何信息。發生這種情況是因爲VCL應用程序中的TLabel對象不是窗口對象。

相關問題