现用InsertMenu的方法,从其它软件窗体上复制过来一个顶层菜单。
在我的窗体菜单栏上看起来是一样的,但单击它后却无反映。问,如何让其执行原功能?
千万不要告诉我,要自己编写各个子菜单项的具体执行代码噢,那我还要拷贝干啥,不会自己生成菜单吗?因是插入别的软件顶层菜单的,故无法知道其子菜单到底是些什么功能,(总不见得用菜单标题来判断?若是多语言版的呢?还要懂多国语言吗 :)
所以根本就不可能自己编此菜单的执行代码。
当然,本来就不必了解,只想让它在我的程序中仍能起作用而已,由人用鼠标来单击它。比如,插入的一个“文件-退出”菜单项,我想在我软件中单击它,就会退出原软件
(注意不是我的噢)我想是否应该发相同的消息回原软件?
请问,具体怎么做?

解决方案 »

  1.   

    用OLE把那个程序嵌进你的程序里,这样就不用搞什么菜单拷贝了.
      

  2.   

    To ansionhuang(毛毛雨-我是外星人,所以我什么都不知道) :
    可是,可是,那个程序是IE,是OFFICE,是PS,是
    就是为了不看见它们,才要拷贝菜单呀,我自己就是快捷菜单中心。
    再说了,OLE???怎么做?老兄真的是ET?发消息看来是唯一的办法了,可是我这里取到的菜单包括句柄,消息号,是否都和原来的一样?
    即使一样的话,那具体如何做呢?
      

  3.   

    好像你说的比你想的复杂了.复制过来的菜单,不是有菜单句柄吗.?你再查询一下子菜单总数...就下面这个API
    Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long哦,好像不关上面的事.没有用每个菜单都有个编号.第一个从0开始..Getsubmenu() //API然后你怎么能复制到别的软件的菜单的.肯定要找到别的软件的窗体句柄,根据窗体句柄找到菜单句
    柄.发个消息给相应编号的菜单,就可以了.你点击复制过来的菜单中的哪个菜单,就发消息给哪个编号的菜单
      

  4.   

    不过应该发个什么消息过去呢,我没写过类似程序.不知道是不是
    WM_MENUSELECT = &H11F&
    你用SPY++查询一下吧.