none
System Tray Replacement: Kontextmenüs werden nicht für alle Icons (z.B. Outlook) angezeigt RRS feed

  • Frage

  • Hallo,

    ich entwickle ein Shell Replacement und dazu gehört unter anderem auch ein SysTray.

    Ich habe es soweit, dass ich alle Icons und Tooltips erhalte und mit einem Doppelklick auch die entsprechenden Anwendungen öffnen kann. Was jedoch nur bei der Hälfte meiner System Tray Anwendungen klappt, ist das Kontextmenü. z.B. wird das Kontextmenü ohne Probleme für den Task Manager angezeigt. Bei Outlook, Security Essentials, etc. z.B. nicht.

    Ich komme da leider nicht weiter und irgendwie scheinen schon viele im Internet genau an der Stelle festzuhängen.

     

    private static void OnMouseEvent(TrayItem item, MouseButtonEventArgs e, IntPtr buttonAction)
            {
                if (item.Data.uVersion < 4)
                    SendNotifyMessage(item.Data.hwnd, item.Callback, new IntPtr((int)item.Data.uID), buttonAction);
                else
                {
    
                   
    
                    SendNotifyMessage(item.Data.hwnd, item.Callback, MakeWParam(0,0), MakeLParam(buttonAction.ToInt32(), (int)item.Data.uID));
    
                    
                }
                
            }
    
    


     Ich übergebe also der SendNotifyMessage (PInvoke) als Parameter das Handle des Tray Icons (hwnd), "uCallbackMessage" und bei der einen Variante die uID des Tray Icons + welcher Maus-Button gedrückt wurde (z.b. WM_RBUTTONUP, ec.), sowie bei der anderen Variante X und Y Koordinaten (hier habe ich schon alle möglichen Werte ausprobiert).

     

    Gruß

    Sascha

    Dienstag, 13. Dezember 2011 14:50