通过IE的句柄,能否得到IE的全部的菜单?我试了,用GetMenu得不到。请问用什么办法可以得到呢?

解决方案 »

  1.   

    有人问过:问:我原先在win95中编了个程序,使用API GetMenu()动态获取应用程序的菜单项。移到win98以后,发现GetMenu()取不到IE窗口的菜单项。即: GetMenu()返回NULL值。由于win98大量使用IE风格的窗口,造成我的程序无法使用。请问:有什么函数或用什么方法,可以实现动态获取IE风格窗口的所有菜单项呢? 回答:     的确如你所说,GetMenu()函数无法获得IE4的菜单项。问题是这样的,IE4的菜单不同于普通的窗口的菜单。IE4的工具条是由ReBar控制来实现的,而每个ReBar控制包括几个ToolBar控制,IE4的菜单也是一个ToolBar控制,而不是通常的菜单资源!对于象IE4这样的使用ReBar风格菜单的软件,目前还没有特别好的通用的办法来实现动态获取应用程序的菜单项。 
      

  2.   

    个人想法:得到IE进程里的所有handle(已有方法),然后一个一个找,看能不能找到MENU的handle(HMENU)
      

  3.   

    既然不是菜单资源,我认为查找MENU的handle的办法可能行不通。ie及所有的office的程序都使用的是commandbar的控件,并且是共享的。以下摘自微软的网站:Applications that are members of Microsoft Office share a common menu system. Office applications include Microsoft Word , Microsoft Excel, Microsoft Access, Microsoft PowerPoint, and Microsoft Outlook. Each application needs a customized menu to fit its functionality and features. Each member loads its own menu from the components that are available to it from the Office "Command Bars" collection