Autor |
Beitrag |
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: 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 
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: 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
Delphi-Quelltext
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 
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mi 12.11.08 21:00
Boldar hat folgendes geschrieben : |
Wie kann man überhaupt ermitteln und festlegen, welches Programm den Fokus hat? |
:PUSH:
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: 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
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: 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
Delphi-Quelltext
wird die Form trotzdem nie rot...
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
|
|