Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster bei Mausklick nicht aktivieren,ab. OnClick ausführen (https://www.delphipraxis.net/47388-fenster-bei-mausklick-nicht-aktivieren-ab-onclick-ausfuehren.html)

Steve 10. Jun 2005 13:15


Fenster bei Mausklick nicht aktivieren,ab. OnClick ausführen
 
Hi,

wie kann ich es realisieren, dass mein Programm , wenn ein anderes Programm den Focus hat, bei einem Klick auf einen Button nicht aktiviert wird, der Focus beim anderen Programm bleibt und dennoch die OnClick-Behandlungsroutine des Buttons ausgeführt wird?

Folgendes habe ich bereits versucht:
Delphi-Quellcode:
TForm1 = Class(...)
...
    procedure WMMouseActivate(var Message : TWMMouseActivate); message WM_MOUSEACTIVATE;
...

procedure TForm1.WMMouseActivate(var Message: TWMMouseActivate);
begin
  // Sicherstellen, dass eigenes Programm nicht aktiv ist
  if (not Application.Active) or (not Active) then
  begin
    //MA_NOACTIVATE = Nicht aktivieren, aber Klick ausführen.
    message.Result  := MA_NOACTIVATE;
  end;
end;
Dabei geschieht aber nicht ganz das was ich will, sondern folgendes:
Klick auf Fenster-Fläche: Fremde Anwendung verliert Focus, eigene Anwendung wird nicht aktiviert (immerhin)
Klick z.B. auf Button: Fremde Anwendung verliert Focus, eigene Anwendung wird aktiviert, OnClick wird ausgeführt

Wo liegt mein Fehler? :duck:

Danke schonmal,
Gruß
Stephan :dance:
[edit]Tippfehler[/edit]

Zacherl 10. Jun 2005 13:24

Re: Fenster bei Mausklick nicht aktivieren,ab. OnClick ausfü
 
Hallo,
du könntest vielleicht eine WM an die externe Anwendung schicken, so dass diese den Fokus wieder bekommt. Welche und wie du das machen kannst kann ich dir aber auch nicht sagen.

Wozu soll das denn eigentlich gut sein?

Florian

Steve 10. Jun 2005 13:41

Re: Fenster bei Mausklick nicht aktivieren,ab. OnClick ausfü
 
Hi,

ich hatte es schon mit GetFocus und SetFocus aus der Unit Windows versucht, aber GetFocus hat leider 0 zurückgeliefert. Also da liegt das Problem schon darin, dass ich das Handle von der vorher aktiven Anwendung nicht erhalte :? Am liebsten wäre es mir, wenn die andere Anwendung den Focus gar nicht erst verliert, ansonsten wäre das Zurücksetzen des Focus aus meinem Programm heraus wohl die nächste Möglichkeit, jo!
Zum Sinn und Zweck: ich möchte mir ein kleines Tool schreiben, das auf Mausklick Standardtext in die aktive Anwendung eingibt (vgl. Bei Google suchenTypeItIn). Und nein, ich möchte es nicht über Tastenkombinationen und Hooks etc. machen :mrgreen:

Gruß
Stephan :dance:

Zacherl 10. Jun 2005 13:54

Re: Fenster bei Mausklick nicht aktivieren,ab. OnClick ausfü
 
Also da kann ich die auch nicht helfen...
Du müstest halt das Handle der erst aktivien Anwendung rausbekommen, dann funktioniert SetFocus auch sicherlich.
Ansonsten hätte ich dir zum HotKey geraten, aber da du das ja nicht willst...

Florian


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz