standardmäßig blinkt nur der Eintrag in der Taskleiste, wenn Du ein fremdes Fenster in den Vordergrund holen möchtest.
Über einen workarount kann man erreichen, den fremden Thread mit der eigenen Anwendung zu verknüpfen, damit gehts wieder, .. der Code unten ist von NicoDE (nur der Vollständigkeit halber)
vorher SW_RESTORE aufrufen, wenn minimiert
ShowWindow(wnd,SW_RESTORE);
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
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.