簡體   English   中英

如何在第三方Delphi應用程序中獲取控件的屬性列表和值?

[英]How to get the property list and values of a control within a third-party Delphi application?

我想獲得有關第三方應用程序控件的信息,例如其屬性列表及其值:類似於RTTI信息,但適用於第三方Delphi應用程序。

我知道這是可能的。 例如,TestComplete具有ObjectSpy窗口,該窗口可以提供有關控件的許多有用信息,包括RTTI信息。 如何才能做到這一點 ?

在此輸入圖像描述

編輯:解釋為什么我正在調查這個問題...我是TestComplete / TestExecute的注冊用戶,我確實喜歡......大部分內容。 我可以克服一些小問題,但對我來說一個主要問題是他們的許可證驗證系統 ,它要求我總是在運行許可證服務器時使用物理計算機(而不是虛擬機),以便TestExecute可以運行晚。 由於我有基本的測試需求(比較屏幕截圖並檢查基本的Delphi組件的屬性),我想知道創建我自己的私有非常簡單的“類似TestExecute”的應用程序是多么困難。

為了更進一步,我建議你在SO上找到這些相關資源


我強烈建議你移植到Delphi這個名為Get Process Info with NtQueryInformationProcess的 c ++項目:使用ReadProcessMemory訪問用於啟動另一個進程的CommandLine的實踐經驗。


最后編輯:

當我們想要使用調試信息編譯的另一個應用程序並在運行時從中獲取東西時,我們正在處理的是“如何編寫我自己的自定義調試器/分析器/自動測試內核”的問題。

TestComplete和其他AutomatedQA程序包含一個Debugger和Profiler Kernel,它可以啟動,運行和遠程控制應用程序,並以多種格式解析它們的Debug信息,包括附加到這些可執行文件的TurboDebugger TD32信息。 它們的分析內核也可以在創建時查看每個對象,並且可以迭代類似RTTI的調試信息,以確定創建的對象是特定的類類型,然后查看該對象中存在哪些屬性。

現在,TestComplete添加了AQTime級別的東西,內省Window句柄的能力,以及來自Window Handles的直覺,后面是Delphi類名稱。 但是,你(或我)編寫一個程序可以告訴你鼠標位於屬於TPanel的窗口句柄上,而不是知道哪個版本的Delphi創建了那個特定的可執行文件,哪個版本的TPanel然后,它將包含哪些屬性,並從正在運行的程序中讀取這些值,這需要您實現自己的“調試器引擎”。 我不知道你甚至可以用來開始編寫自己的調試器的任何開源應用程序,你當然不能在你自己的應用程序中使用AQTime / TestComplete中的那些,或Delphi內部的那些。

我不能給你寫一個示例程序來做這件事,但即使我可以,也需要很多第三方庫支持。 要查看鼠標懸停的窗口句柄的窗口類,請查看如何實現類似MS Spy ++實用程序的操作。

一個簡單的例子是,如果您的鼠標鼠標懸停在您自己的應用程序內的窗口上 為此,請參閱about.com鏈接,該鏈接僅使用RTTI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM