none
求助:如何获取Shell的ContextMenu中的菜单个数?如果取到其中某一项菜单的文本? RRS feed

  • 问题

  • 我有如下代码:

    ...
    IContextMenu m_IContextMenu = (IContextMenu)Marshal.GetObjectForIUnknown(contextMenuHanle);
    Intptr      m_ContextMenu = CreatePopupMenu();
    m_IContextMenu.QueryContextMenu(m_ContextMenu, 0, CMD_FIRST,CMD_LAST,CMF_NORMAL | CMF_EXPLORE);
    
    //弹出菜单
    uint cmd=Win32.TrackPopupMenuEx(m_ContextMenu,TPM.RETURNCMD, x, y, wndHandle, IntPtr.Zero);
    
    

    在上面代码中,实现了点击一个文件,弹出此文件对应的系统右键菜单,现在的问题是:

    1,如何获取弹出菜单中的菜单项数?

    2,当点击一个菜单后,如何获取其菜单项的文本?如“复制”。我通过GetCommandString()好像不行:

    StringBuilder menutext = new StringBuilder(256);
    m_IContextMenu.GetCommandString(cmd-1, GCS.VERBA, 0, menutext, menutext.Capacity + 1);

    这段代码中,menutext始终为空的。

    还请高手指教?

    2013年4月23日 9:45

答案