Wie erhält man das Handle des Controls, das den Eingabefocus hat?
Für Fenster in einem Prozess des eigenen Programms hilft ein einfacher Aufruf der API-Funktion "GetFocus". Für Fenster in fremden Prozessen muß man zuerst eine Beziehung zwischen dem eigenen Prozess und dem Prozess, der das aktive Control enthält, herstellen. Das erledigt diese Funktion der man das Handle des aktiven Top-Level-Fensters übergeben muß. Das Handle des aktiven Top-Level-Fensters erhält man z.B. mit "GetForegroundWindow".
function GetFocussedWindow(ParentWnd : HWnd) : HWnd; var OtherThreadID,Buffer : DWord; begin OtherThreadID := GetWindowThreadProcessID(ParentWnd, @Buffer); if AttachThreadInput(GetCurrentThreadID, OtherThreadID, true) then begin Result := GetFocus; AttachThreadInput(GetCurrentThreadID, OtherThreadID, false); end else begin Result := 0; end; end;
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch: