![]() |
Fokussiertes Fenster einer Windows 10 App ermitteln
Hallo,
ich möchte Daten an ein Eingabefeld senden. In "normalen" Windows-Programmen kann ich dies über folgenden Code durchführen.
Delphi-Quellcode:
Das funktioniert seit Jahren unter Windows, auch bei Programmen unter Windows 10.
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; Aber leider nicht mehr in den Windows 10 Apps, wie z.B. Edge
Delphi-Quellcode:
lässt sich ermitteln, aber nicht das für
ActiveWindow
Delphi-Quellcode:
notwendig Handle.
Postmessage
Weiß zufälligerweise jemand Bescheid, wie man das Handle in einer Windows 10 App ermittelt? Beste Grüße amigage |
AW: Fokussiertes Fenster einer Windows 10 App ermitteln
Kenne mich damit (noch) nicht aus, aber das klassische Konzept von HWNDs, Kindfenstern und allem greift doch da nicht mehr, oder?
Nur kurz überflogen: ![]() und ![]() Vergleiche doch mal die Fensterstruktur von z.B. Edge mit dem normalen Explorer oder Notepad mit z.B. ![]() |
AW: Fokussiertes Fenster einer Windows 10 App ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
Hm, WinSpy gibt folgendes aus.
Es ist definitiv ein andere Struktur, mit der ich aber leider überhaupt nichts anfangen kann... |
AW: Fokussiertes Fenster einer Windows 10 App ermitteln
Hallo..
hmm.. Meine Erfahrung : PostMessage mit WMChar funktioniert nicht mit allen Fenstern/Programmen/Controlls. Wenn Du nur an das derzeit aktive Fenster/Control eine Tastatur-Eingabe erzeugen willst, dann nehme besser die Windows-Api 'SendInput'. Diese funktioniert sogar mit ActiveX-Controlls zuverlässig, da diese eine RAW- Eingabe simuliert, wie wenn der Char von einer Tastatur kommt. Bei ActiveX-Contrls wird (wenn ich mich richtig erinnere) eine Tastatureingabe von Fenster selber verarbeitet und an sein Child geschickt. Oder die Tastatureingaben werden direkt als RAW-Input verarbeitet, dann werden alle Windows-Messages komplett ignoriert. Und ich vermute, das es bei Edge ähnlich ist. |
AW: Fokussiertes Fenster einer Windows 10 App ermitteln
Hallo,
danke für den Hinweis. Ich werde es mal mit "SendInput" probieren und berichten. Amigage |
AW: Fokussiertes Fenster einer Windows 10 App ermitteln
:-D
Es war der richtige Tipp. Mit SendInput funktioniert es auch in Metro Apps. Und mit dem Wrapper SendInputHelper war es auch ein Kinderspiel, es umzusetzen. ![]() Besten Dank für die richtige Spur. Amigage |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz