![]() |
Re: Eigene Menuitems in taskbar-popup einschleusen
Das Systemmenü gehört zum Fenster. Und es werden WM_SYSCOMMAND Nachrichte an dein Fenster verschickt, wenn dort draufgeklickt wird.
|
Re: Eigene Menuitems in taskbar-popup einschleusen
Abend,
ich habe nun mal
Delphi-Quellcode:
eingebaut und festgestellt, dass diese Message nur kommt, wenn das Menü aufgerufen wird, jedoch nicht, wenn ein Item geklickt wird. Gibt es dazu weitere Messages, die mir vielleicht den Item-Index liefern oder muss ich mir das Menu-Handle merken und danach bei einer WM_LBUTTONDOWN Message das passende menuitem-rectangle suchen? Ich denk ich probier das mal eben aus...
if PCWPSTRUCT(lParam)^.message = WM_SYSCOMMAND then
Windows.MessageBeep(1); |
Re: Eigene Menuitems in taskbar-popup einschleusen
WM_SYSCOMMAND wird auch aufgerufen, wenn ein Menüpunkt angeklickt wird.
|
Re: Eigene Menuitems in taskbar-popup einschleusen
ja schön wäre das... wieso bekomme ich dann bei dem Test keinen weiteren Beep?
Wird eigentlich das Erzeugen einer SW_MINIMIZE Message beim Klicken des standardmäßigen Menüpunktes von Windows durchgeführt oder von der DefWindowProc? irgendwer muss doch die Messages bekommen, wenn schon nicht der globale hook |
Re: Eigene Menuitems in taskbar-popup einschleusen
Hallo,
so... wieder einen Schritt weiter. Es sind übrigens keine WM_SYSCOMMAND Messages, die da versandt werden. Als HookID muss man WH_SYSMSGFILTER angeben. Weiter bekommt man sehr seltsame Messages. Ich habe mal ein paar in einen Stream abgezweigt ( die WM_NULL, WM_MOVE, WM_CREATE, WM_DRESTROY etc sind unterdrückt ) nun bekommt man bei mehrmaligem Betätigen des SystemMenüs folgende messages (beim hovern): Zitat:
Bei meinem eigenen Menu Item wird folgendes ausgegeben Zitat:
Schlussfolgerungen (jeweils Hi-Word(message)) Zitat:
Ok ich habs zum Laufen gekriegt... jetzt räume ich den code noch etwas auf und dann könnt ihr euch den mal anschauen |
-
|
Re: Eigene Menuitems in taskbar-popup einschleusen
Liste der Anhänge anzeigen (Anzahl: 2)
So, bevor ich nun rausfinde, wie man den thread anders kennzeichnet, sei an dieser Stelle in chronologischer Reihenfolge toms, axellang, Crazy Ivan und insbesondere Luckie für die fachliche und moralische Unterstützung gedankt :)
Thema erledigt. Verbesserungen: Momentan gibt es noch einige Ausnahmen, wo keine MenuItems gesetzt werden, wie zum Beispiel Firefox und Explorer. Dies zu ergründen ist aber nicht Kernbereich meines Interesses. Außerdem könnte man noch den Index des MenuItem anders setzen und noch einen Trenner einfügen. Zuletzt könnte man den Überwachungstimer durch das Abfangen der WM_CREATE messages für Hauptfenster ersetzen und so direkt eingreifen, wenn das Fenster und sein Menü erzeugt wird. Ciao :dp: |
Re: Eigene Menuitems in taskbar-popup einschleusen
Liste der Anhänge anzeigen (Anzahl: 3)
Es ist vollendet.
Dieses kleine Progrämmchen wird später mal als Dienst im Hintergrund laufen und Menüerweiterungen bereitstellen. Momentan fügt es den Systemmenüs den Punkt "Process priority ..." hinzu, der beim Anklicken ein Fenster anzeigt, mit dem man die Prozesspriorität setzen kann ( bei jenem Prozess, dem das Fenster gehört ) ![]() Funktionsprinzip:
|
Re: Eigene Menuitems in taskbar-popup einschleusen
@helgew Editiere bitte trotzdem das nächste Mal deine Beiträge. Es wird hier nicht gerne gesehen wenn jemand innerhalb von 24 Stunden 4 Beiträge hintereinander verfasst.
|
Re: Eigene Menuitems in taskbar-popup einschleusen
Zitat:
Wenn ich ein paar Tage lang an einem Delphi-Problem hängen bleibe und das Problem dann aufgrund einer Antwort aus der DP gelöst wird, würde ich meinen letztbezüglichen alten Beitrag in der DP nicht editieren, sondern - aus Freude über die geschaffte Problemlösung - "pushen". Seid doch nicht immer päpstlicher als der Papst! Sterben tun wir früh genug ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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