Einzelnen Beitrag anzeigen

NicoDE
(Gast)

n/a Beiträge
 
#8

Re: Programm in den Vordergrund bringen

  Alt 27. Jun 2006, 12:28
Ansonsten kannst du dir das Vordergrundfenster holen (GetForegroundWindow), die Eingabequeues verbinden (GetWindowThreadProcessId, AttachThreadInput) und mittels (Windows.)SetFocus dein Programm aktivieren.

Delphi-Quellcode:
function BringToFrontEx(AWnd: HWND): Boolean;
var
  FgWindow: HWND;
  ThreadId: DWORD;
  Attached: BOOL;
begin
  FgWindow := GetForegroundWindow();
  ThreadId := GetWindowThreadProcessId(FgWindow, nil);
  Attached := AttachThreadInput(GetCurrentThreadId(), ThreadId, True);
  if Attached or (ThreadId = GetCurrentThreadId()) then
    Result := SetFocus(AWnd) <> 0
  else
    Result := SetForegroundWindow(AWnd);
  if Attached then
    AttachThreadInput(GetCurrentThreadId(), ThreadId, False);
end;
Wenn dein Programm sich ohne Grund den Fokus holt, wird der Benutzer es schnell hassen lernen...
  Mit Zitat antworten Zitat