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.