输入焦点所在窗口 API

返回有输入焦点的窗口句柄(一般为控件)

HWND GetFocus();

如果要返回其他程序的活动控件,源码如下(DELPHI)

// 获取屏幕上活动窗口中,具有输入焦点的控件句柄
function TForm1.GetActiveEdit : HWND;
var
    h : HWND;
    FormThreadID, CWndThreadID : DWORD;
begin
    result := 0;

    // 得到当前活动窗口
    h := GetForegroundWindow;

    if (h = Handle) then
    begin
        result := GetFocs;
        exit; // 排除程序本身的窗口
    end;

    // 本程序的线程ID
    FormThreadID := GetCurrentThreadId;

    // 当前窗口的线程ID
    CWndThreadID := GetWindowThreadProcessId(h, nil);

    // 附加输入线程
    AttachThreadInput(CWndThreadID, FormThreadID, true);

    // 得到当前键盘光标所在的窗口
    result := GetFocus;

    // 取消附加的输入线程
    AttachThreadInput(CWndThreadID, FormThreadID, false);
end;