Use GetMenu() function if it has a menu. 

解决方案 »

  1.   

    获得菜单:GetMenu() 
    子菜单:GetSubMenu() 
      

  2.   

    HMENU   GetMenu(HWND   hWnd);   
        
    HMENU   GetSubMenu(HMENU   hMenu,int   nPos);   
      

  3.   

    网上的回答也都向这样.我试过GetMenu()不能得到 用TrackPopupMenu弹出的菜单.我想 窗口GetMenu()获取的应该是 那种静态的像" 文件(&F)  编辑(&)E  查看(&V) ..." 的菜单.而弹出的菜单本生就是窗口,我想要的是如何获取这个窗口(就是菜单窗口)所对应的菜单句柄.
      

  4.   

    别人的程序咯?
    用FindWindow和FindWindowEx试下实在不行可以考虑Hook TrackPopupMenu
      

  5.   

    可以这么说 反正实现就好.
    不过 to greatws:
    菜单应该是TrackPopupMenu调用后的 要Hook 也该 Hook 菜单窗口.
    而且情况是已知菜单窗口的HWND,所以没必要FindWindowxxx();
      

  6.   

    怎么没人了 是否没人实现过呢?有人说说metafile 阿?
      

  7.   

    菜单是一种比较特殊的窗口,无法用FindWindows获取,只能HOOK
      

  8.   

    我不知道这有什么用,不过,在你添加菜单的时候,会有一个菜单句柄吧, 保存下来就够了。MAKEINTRESOURCE(ID_XXX)保存宏的值吧。
      

  9.   

    你也要看是什么软件,有的软件的Menu完全是自己写的
      

  10.   

    Hook TrackPopupMenu足够了。你试验一下就知道。我就是用这个技术给其他程序加菜单。把我的代码注入进去。
      

  11.   

    这个问题我已找到解决办法了。
    昨天一直在研究,认为系统会把HMENU放到 extra bytes里,试着去,不行!
    后来MSDN上看到了一个函数,试试成功!
    上课去了..