Guten Morgen zusammen!
Komme gerade bei einem kleinen "Phänomen" nicht weiter
Vielleicht weiß ja jemand von Euch eine Lösung? In diesem Fall wird leider noch Delphi 7 benutzt.
Und zwar soll ein Fenster einer Fremdanwendung (in meinem Fall ein Browser-Tab) in den Vordergrund gebracht werden. Dafür gab's ursprünglich den Befehl SetForegroundWindow. Dieser funktionierte ab Windows 7 nicht mehr. Deshalb gab es dann eine "Überarbeitung", mit der es für Windows 7 wieder funktionierte. Nun ist mir aufgefallen, dass dieser Code aber ab Windows 10 wieder nicht funktioniert.
Frage: Weiß jemand, was man abändern muss, damit der Code ein Fremdfenster (z.B. ein Browsertab) unter Windows 10 in den Vordergrund bringen kann?
Delphi-Quellcode:
procedure SetForegroundWindowEx(Wnd: HWND);
var
Attached: Boolean;
ThreadId: DWORD;
FgWindow: HWND;
AttachTo: DWORD;
begin
Attached := False;
ThreadId := GetCurrentThreadId;
FgWindow := GetForegroundWindow();
AttachTo := GetWindowThreadProcessId(FgWindow,
nil);
if (AttachTo <> 0)
and (AttachTo <> ThreadId)
then
if AttachThreadInput(ThreadId, AttachTo, True)
then
begin
Attached := Windows.SetFocus(Wnd) <> 0;
AttachThreadInput(ThreadId, AttachTo, False);
end;
if not Attached
then
begin
SetForegroundWindow(Wnd);
SetFocus(Wnd);
end;
end;
// von setforegroundWindowEx
//Aufruf mit:
SetForegroundWindowEx(
Handle);
Als
Handle übergebe ich in diesem Fall immer das
Handle des Browser-Tabs. Das führt dann dazu, dass man zwischen Tabs "hin- und herspringen" kann, um dem Benutzer z.B. etwas vorzuführen, wobei man verschiedene Tabs braucht. - Unter Windows 10 funktioniert der Code leider nicht mehr
Markus