Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Anderem Program den Fokus übergeben

  Alt 8. Jul 2018, 00:13
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

Geändert von EWeiss ( 8. Jul 2018 um 00:18 Uhr)
  Mit Zitat antworten Zitat