我有一个应用程序有一些控件(按钮、编辑等)的窗口。我需要模拟用户事件(如 Tab 单击和输入文本)。我正在使用 keybd_event
在选项卡排序控件(编辑框)和输入文本之间移动焦点。但我需要知道当前焦点控件的句柄(例如,从中获取文本或更改其样式)。我该如何解决?
ps
我现在正在编写 Delphi,但这并不重要(Win-API 无处不在)。
最佳答案
有关以下示例的说明,请参阅 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;
关于c++ - 从另一个应用程序窗口获取焦点控件的句柄,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21577348/