![]() |
AW: Anderem Program den Fokus übergeben
Ohne gewähr..
Nur getippt nicht getestet.
Delphi-Quellcode:
man könnte das ganze jetzt noch in einem Loop packen..
function GetFocusHandle: HWND;
var ForegroundHandle: HWND; PID: DWord; myThreadID: DWord; begin // Meine ThreadID myThreadID := GetCurrentThreadId; // Hole das Handle vom Top Level Vordergrund Window ForegroundHandle := GetForegroundWindow; // Process ID vom Vordergrund Window einlesen PID := GetWindowThreadProcessId(ForegroundHandle, nil); // diesen Thread und den fremden Thread zusammen fügen AttachThreadInput(myThreadID, PID, true); // Das Focus Handle Result := GetFocus; // Threads von einander trennen in dem ich beim dritten wert false übergebe AttachThreadInput(myThreadID, PID, false); end;
Delphi-Quellcode:
Nun solltest du mit SetFocus(FocusHwnd) den alten Stand wieder zurück setzen können.
doloop := not doloop;
repeat FocusHwnd := GetFocusHandle; application.ProcessMessages; Label1.Caption := IntToStr(FocusHwnd); Sleep(10) until doloop = false; Du kannst aber auch eine Procedure erstellen und verwendest dann anstelle von
Delphi-Quellcode:
Result := GetFocus;
Delphi-Quellcode:
SetForegroundWindow(ForegroundHandle);
Es muss sich aber innerhalb der beiden AttachThreadInputs befinden. Wenn es jetzt fehlschlägt als Beispiel bei Windows Explorer Ordnern dann kannst du das Parent ermitteln um an das Fensterhandle zu kommen. Denn hier wird der Focus immer auf das DirectUIHWND gesetzt ist zumindest bei Win7 so. Bin jetzt aber wirklich raus! Muss an meinem transparenten TabControl weiterarbeiten. ;) gruss |
AW: Anderem Program den Fokus übergeben
Danke ersteinmal für die ganzen Antworten!
Habe es inzwischen mit
Code:
hinbekommen!
GetWindowThreadProcessId
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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