Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Anderem Program den Fokus übergeben

  Alt 8. Jul 2018, 02:37
Delphi-Quellcode:
procedure MySetForegroundWindow(Wnd: HWND);
var
  Attached: Boolean;
  ThreadId: DWORD;
  FgWindow: HWND;
  AttachTo: DWORD;
begin
{ Emils Rezept verlangt
GetForegroundWindow
GetWindowThreadProcessId
AttachThreadInput (true)
GetFocus <- ich nahm SetFocus, mit GetFocus wusste ich nichts mit anzufangen, bitte um hilfe dabei
AttachThreadInput (false)
hoffentlich ist es so ok
}

  Attached := False;
  ThreadId := GetCurrentThreadId; // unsere .exe
  FgWindow := GetForegroundWindow(); // aktuelles Foreground
  AttachTo := GetWindowThreadProcessId(FgWindow, nil);
  if (AttachTo <> 0) and (AttachTo <> ThreadId) then
   if AttachThreadInput(ThreadId, AttachTo, True) then
     begin
       Attached := Windows.SetFocus(Wnd) <> 0; // Focus setzen
       AttachThreadInput(ThreadId, AttachTo, False); // connect lösen
     end;
  if not Attached then
     begin
       SetForegroundWindow(Wnd); // SetForeground ausführen
       SetFocus(Wnd); // Focussieren
     end;
end;
Zumindest ist alles vom Rezept enthalten, bin auch am Ende damit.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat