有个软件,我想取得菜单句柄和ID自动点击,用GetMenu 居然找不到句柄~~祭出Spy++,菜单类型居然是什么
Afx:00400000:b:00010011:00000010:00000000  ,网上查了下,貌似是动态生成的,用findwindowex取得了句柄后,用GetSubMenu也不能取得下一级弹出式菜单句柄,估计GetMenuItemID也没用~问 如何能取得弹出式菜单句柄 和菜单ID

解决方案 »

  1.   

    你可认用SPY++的Messages 功能得到点击菜单项时发出的消息,然后用API函数向哪个窗口发送这个消息就行了。
      

  2.   

    一般来说,使GetMenu是可以获得该窗口所拥有的MENU的。如果无法实现,我倒有个思路。一般来说,MENU是作为资源嵌入PE文件里的,其类型为RT_MENU,因此可以使查看PE文件里的资源节来实现。不过这种办法有两个缺点,一是用VB描述PE资源的树结构很困难,二是只能获得静态储存在PE里的菜单(即设计时就确定了的菜单),对于运行时使用API生成的弹出菜单,则无法获得。
    此外,还可以通过HOOK CREATEMENU、POPUPMENU之类的API来实现。此方法可获得全部菜单的ID。