Rechtsclick auf Taskbar-Buttons



  • MORL schrieb:

    Werden die Menüelemente durch das jeweilige Fenster festgelegt?

    Ja, denn dieses Menu ist jeweils das System-Menu des Fensters, welches erscheint, wenn man auf das Icon links oben in der Ecke klickt.



  • Von der Warte hab ich das gar nicht betrachtet, ich dachte er meinte Icons unten neben der Uhr in der Taskleiste....



  • Es sagte aber "Button" - nicht "Icon". 😉

    P.S.: Grüße an den Lehrlingskollegen bei René. 😉



  • GetSystemMenu

    The GetSystemMenu function allows the application to access the window menu (also known as the system menu or the control menu) for copying and modifying.



  • Danke für den Tipp!
    Hab da aber trotzdem große Probleme bei der Umsetzung des Ganzen.
    GetSystemMenu liefert mir ja nur ein Handle zu einer Kopie des Menüs. Ich wollte ja aber eigentlich dem Menü einen Punkt hinzufügen aber das ginge ja nur mit den korrekten Handle des Menüs.
    Ich hab mich dann mal im MSDN umgesehen und ein bissel herunprobiert. Nix hat funktioniert. Vielleicht bin ich auch nur zu blöd. 😃

    @Hepi: Ich möchte diesen neuen Menüpunkt bei allen offenen Fenstern einfügen.



  • EnumWindows und dann jeweils mit GetSystemMenu den Menu-Handle holen und dann InsertMenuItem entsprechend aufrufen. Wenn du das dann auch bei neu aufgeheneden Fenstern machen willst wirst du einen Hook brauchen 🙄



  • So weit so gut.
    Den Eintrag hab ich hin bekommen. Leider wird der nur beim klick auf das Icon in der Titelleiste des Programmes angezeigt. Beim klick in der Taskleiste ist er nicht da (Das ganze Popupmenü ist da beschränkt auf die 3 Standart Funktionen, während in der Caption noch so Sachen wie Verschieben und Größe ändern angezeigt werden.)
    Ich arbeite mit dem CBuilder 6. Kann es sein das der vielleicht standartmäßig da irgendwas einstellt?



  • Also bei mir funktioniert das 🙄 - evtl. gibt es da auch Unterschiede seitens des Betriebssystems 😕
    Ich habe es mal (nur zum Test) so gemacht:

    HMENU hSysMenu = GetSystemMenu(hWnd,FALSE);
    ModifyMenu(hSysMenu,0,MF_BYPOSITION|MF_STRING,0,"Test");
    


  • Auch deine Version liefert das selbe Ergebnis wie mein. Ich hatte es nur über InsertMenuItem realisiert.
    Hab Windows XP Professional. Meist du das liegt daran?



  • Willst du das jetzt nur für dein Fenster, oder Systemweit?
    Schau dir aber auf jeden Fall mal im Always on Top-Artikel den letzten Abschnitt ("Hooking the system menu and appending a custom item") an 🙂



  • Ich möchte den Menüeintrag für jedes offene Fenster haben. Mein Programm läuft im Hintergrund und hat an sich kein Fenster.
    Den Artikel hab ich erst mal nur überflogen. Ich hatte noch keine Zeit ihn intensiver zu lesen, werd das aber auf jeden Fall noch tun!



  • Dürfte dann sogar genau das sein, was du suchst 🙂



  • Danke!
    Der Artikel ist wirklich gut. Muss mich nur erst mal ein bissel mit den Hooks und den dll's vertraut machen. Das iss noch totales Neuland für mich.

    Greez

    MORL


Anmelden zum Antworten