Einzelnen Beitrag anzeigen

amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
260 Beiträge
 
Delphi 11 Alexandria
 
#1

Fokussiertes Fenster einer Windows 10 App ermitteln

  Alt 11. Aug 2015, 11:36
Hallo,

ich möchte Daten an ein Eingabefeld senden.
In "normalen" Windows-Programmen kann ich dies über folgenden Code durchführen.

Delphi-Quellcode:
  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;


var
  ActWindow, TargetWindow: HWND;
  KeyData : packed record
    RepeatCount : word;
    ScanCode : byte;
    Bits : byte;
  end;
  Character : byte;

begin
  ActWindow := GetForegroundWindow;
  if ActWindow <> 0 then
    TargetWindow:= GetFocussedWindow(ActWindow);
    if TargetWindow <> 0 then
    //...
      PostMessage(TargetWindow, wm_char, Character, LongInt(KeyData));
    //...
    begin
  end;
end;
Das funktioniert seit Jahren unter Windows, auch bei Programmen unter Windows 10.
Aber leider nicht mehr in den Windows 10 Apps, wie z.B. Edge

ActiveWindow lässt sich ermitteln, aber nicht das für Postmessage notwendig Handle.

Weiß zufälligerweise jemand Bescheid, wie man das Handle in einer Windows 10 App ermittelt?

Beste Grüße
amigage
  Mit Zitat antworten Zitat