从另一个应用程序窗口获取焦点控件的句柄

Ale*_*kov 4 c c++ windows delphi

我有一个应用程序有一些控件(按钮、编辑等)的窗口。我需要模拟用户事件(如 Tab 单击和输入文本)。我用来keybd_event在选项卡排序控件(编辑框)和输入文本之间移动焦点。但我需要知道当前焦点控件的句柄(例如从中获取文本或更改其样式)。我该如何解决?

ps我现在正在写Delphi,但这并不重要(Win-API到处都一样)。

Ser*_*yuz 5

GetFocus有关以下示例的说明,请参阅文档中的备注部分。

function GetFocus: HWND;
var
  Wnd: HWND;
  TId, PId: DWORD;
begin
  Result := windows.GetFocus;
  if Result = 0 then begin
    Wnd := GetForegroundWindow;
    if Wnd <> 0 then begin
      TId := GetWindowThreadProcessId(Wnd, PId);
      if AttachThreadInput(GetCurrentThreadId, TId, True) then begin
        Result := windows.GetFocus;
        AttachThreadInput(GetCurrentThreadId, TId, False);
      end;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)