【发布时间】:2019-11-25 06:59:09
【问题描述】:
我正在制作 Delphi 应用程序来控制其他应用程序。我需要在其他应用程序的 ComboBox 中一一选择项目并获取其文本。我使用 FindWindowEx 来找到那个 ComboBox。现在我可以找到 ComboBox,但我不知道如何在 ComboBox 中选择项目。
var
ParentWindow: HWND;
ChildWindow: HWND;
begin
ParentWindow := FindWindow('TfrmMain', nil);
if ParentWindow <> 0 then
begin
ChildWindow := FindWindowEx(ParentWindow, 0, 'TPageControl', nil);
ChildWindow := FindWindowEx(ChildWindow, 0, 'TTabSheet', nil);
ChildWindow := FindWindowEx(ChildWindow, 0, 'TfrmInnerView', nil);
ChildWindow := FindWindowEx(ChildWindow, 0, 'TPanel', nil);
ChildWindow := FindWindowEx(ChildWindow, 0, 'TComboBox', nil);
end;
end;
我希望有人告诉我怎么做。
【问题讨论】:
-
使用 UIAutomation
-
@David Heffeman,因为我是 Delphi 的初学者;可以给我一些容易理解的线索吗?
-
首先使用网络搜索和我给你的关键字做一些研究。不要指望在 10 分钟内解决这个问题。如果您是一个完全的初学者,那么,恕我直言,目前这可能是一个太大的挑战。
-
您可以send window messages 喜欢CB_GETCOUNT 和CB_GETLBTEXT,或者使用UI Automation interfaces。消息更容易处理,但需要跨进程边界手动封送内存缓冲区。 UI 自动化更复杂,但会为您处理封送处理。
标签: delphi-xe2