Autor Beitrag
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: So 09.11.08 20:52 
Hallo,
ist es möglich, das Handle desjenigen Controls zu ermitteln, welches den Fokus hatte, bevor mein Programm den Fokus bekam, und dem Wieder den Fokus zu geben?
Also wenn man z.B. von der Suchleiste im Browser zu dem Programm wechselt, das Handle der Suchleiste.
Müsste man dazu den Fokus permanent überwachen?
Welche Möglichkeiten gibt es dazu ausser pollen(gibt es da villeicht eine message)?
Oder geht das sonst irgendwie?
Grüsse
Boldar
Boldar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mo 10.11.08 15:59 
Nun, im Primzip reicht es auch, wenn ich dem Vorgänger-Programm den Fokus zurückgeben kann.
Es gibt ja
ausblenden Delphi-Quelltext
1:
self.senttoback					

aber das gibt ja nicht den Fokus an ein anderes Programm, sondern macht das Fenster nur in den Hintergrund.
Wie kann man überhaupt ermitteln und festlegen, welches Programm den Fokus hat?
Boldar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mi 12.11.08 21:00 
user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:

Wie kann man überhaupt ermitteln und festlegen, welches Programm den Fokus hat?


:PUSH:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 13.11.08 05:33 
GetForegroundWindow sollte das sein was du suchst.
msdn.microsoft.com/e...ms633505(VS.85).aspx

Zu deiner ursprünglichen Frage:
msdn.microsoft.com/e...ibrary/ms646282.aspx
WM_KILLFOCUS wird an das Control gesendet, das den Fokus verloren hat.

// EDIT:
Hier findest du mehr dazu:
blogs.msdn.com/jfosc...06/08/02/686141.aspx
Boldar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Do 13.11.08 15:42 
Muss ich dann wm_killfocus im private für die Form deklarieren?
Denn so geht es nich, wm_killfocus wird so nie ausgelöst...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 13.11.08 16:18 
Naja, so bekommst du es ja nur bei dem mit, was an dein Formular gesendet wird. Du müsstest glaube ich einen Hook benutzen, denn anders kommst du glaube ich nicht an fremde Windows Botschaften heran. In der WndProc deines Programms kommen ja nur welche an, die an deine Anwendung geschickt wurden.
Boldar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Do 13.11.08 16:20 
Kill_focus wird doch ausgeführt wenn die Form den Focus verliert, oder?
Aber wenn ich in die wm_killfocus reinschreibe
ausblenden Delphi-Quelltext
1:
self.color := clred;					


wird die Form trotzdem nie rot...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 13.11.08 16:23 
Die Botschaft wird an das Control gesendet, das den Fokus hatte, ein Formular ist kein Control. Überschreibe einfach deine WndProc, dann wirst du die entsprechenden Botschaften an dein Programm anfangen können.
Für deine eigenen Komponenten gibts auch OnLeave und OnEnter für Fokus erhalten und verloren.