在另一个应用程序的组合框中选择一个项目

时间:2019-11-25 06:59:09

标签: delphi-xe2

我正在制作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;

我希望有人告诉我该怎么做。

1 个答案:

答案 0 :(得分:0)

如果 TfrmInnerView 的子窗口只有一个名为 TPanel 的类,则下面的代码可以正常工作。但是,如果您的 TfrmInnerView 子窗口有多个具有相同名称 TPanel 的类,则下面的代码只能找到第一类 TPanel 。我现在正在寻找找到二等舱的方法。任何想法我都会感激。

SendMessage(ComboHandle, CB_SETCURSEL, NewSelectionIndex, 0); 

使用:SendMessage(ChildWindow,CB_SETCURSEL,1,0);
我从[What windows messages are used by Delphi to notice changes in a combo box?