Also das mit dem ermitteln ist ein klacks.
if GetParent(GetForegroundWindow) = 0 then lHwnd := GetForegroundWindow else lHwnd := GetParent(GetForegroundWindow);
.
Diese Zeile in .dpr gleich hinter begin einfügen.
In der MainForm das hier einfügen
Delphi-Quellcode:
var
FormX: TFormX;
lHwnd: HWND;
...
procedure TFormX.FormShow(Sender: TObject);
begin
SetForegroundWindow(lHwnd);
end;
Das "setzen" klappt nicht obwohl korrektes
Handle Anhang 49466. (Ich habe .exe aus dem TC heraus gestartet)
Vielleicht braucht man dafür mehr Rechte?
Und du glaubst das klappt so wie du denkst?
Du weist doch gar nicht welcher Prozess den Focus hat und ob das
Handle das du einholst das des Aktiven Fensters ist.
Es kann genauso gut auch das eines Button des aktiven Fensters sein wenn dieser in der anderen Anwendung den Focus hat.
Ich würde so vorgehen.
GetForegroundWindow
GetWindowThreadProcessId
AttachThreadInput (true)
GetFocus
AttachThreadInput (false)
Die lösung von @dummzeuch ist schon näher dran
Was das mit dem GetParent soll müsstest du mir mal näher erläutern.
Aber gut macht mal
gruss