Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: Anwendung in den vordergrund

  Alt 23. Jun 2007, 22:47
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.
  Mit Zitat antworten Zitat