AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Message bei Programmaktivierung aus Taskbar
Thema durchsuchen
Ansicht
Themen-Optionen

Message bei Programmaktivierung aus Taskbar

Ein Thema von hanspeter · begonnen am 18. Jan 2011 · letzter Beitrag vom 18. Jan 2011
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Message bei Programmaktivierung aus Taskbar

  Alt 18. Jan 2011, 12:08
an welcher Stelle versuchst du auf die Message zu reagieren? Versuchst du auf die Message an das Form zu reagieren oder versuchst du auf die Message an die eigentliche Application zu reagieren?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Message bei Programmaktivierung aus Taskbar

  Alt 18. Jan 2011, 12:17
Also ausblenden findest du hier

Ansonnsten könntest du im Aufrufenden Programm einen Boolean einrichten, welcher True ist während du in der Warteschleife hängst.

Und in der Message WM_Activate wertest du diesen wert aus und sorgst dafür, dass das Programm nur wieder aktiviert wird, wenn es nicht mehr in der Schleife hängt.

PS. Das Problem sollte bei dir nicht nur in der Taskbar auftreten, sondern auch wenn das Fenster auf andereweise aktiviert wird z.b. über "Alt + Tab" oder im Taskmanager.

Edit:
Zusätzlich musst du das selbe wohl auch für "WA_CLICKACTIVE" machen.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)

Geändert von lbccaleb (18. Jan 2011 um 13:16 Uhr)
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Message bei Programmaktivierung aus Taskbar

  Alt 18. Jan 2011, 21:02
an welcher Stelle versuchst du auf die Message zu reagieren? Versuchst du auf die Message an das Form zu reagieren oder versuchst du auf die Message an die eigentliche Application zu reagieren?
Bei der Application bzw. bei der Form selbst kommt keine Message an.
In der eigentlichen Warteschleife aus dem oberen Eintrag kommt nur ein wm_paint beim Aktivieren des rufenden Programms.
Entweder bleiben alle anderen Meldungen schon im Delphi hängen oder das Fenster zeichnet sich als einzige Reaktion nur neu.
Den Focus kann es ja nicht bekommen, da es in einer "harten" Warteschleife hängt.


Delphi-Quellcode:
 if ret = (WAIT_OBJECT_0 + 1) then
      begin
          
        while PeekMessage(Msg, 0, WM_PAINT, WM_PAINT, PM_REMOVE) do
        begin
          if msg.Message = wm_Paint then messagebeep(1); <<<<<<<<<<<<
          DispatchMessage(Msg);
      end;
An lbccaleb
Ja das Problem tritt auch bei anderen Aktivierungen auf (Taskmanager, Alt-Tab). Ich wollte nur das Problem nicht unnötig komplizieren.


Gruß
Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz