我在窗体上放了一个按钮(Button1)ToolBar控件(ToolBar1)和一个菜单控件(MainMenu1),再在其中随便设了几个子菜单,然后,把菜单联接到ToolBar控件中(修改ToolBar1控件的Menu属性为MainMenu1),用下面按钮中的代码,使其中的一个子菜单下拉。
procedure TWordForm1.Button1Click(Sender: TObject);
var Rc:TRect;
begin
  Rc:=ToolBar1.Buttons[1].BoundsRect;
  TrackPopupMenu(ToolBar1.Buttons[1].MenuItem.Handle,0,Rc.left,Rc.Bottom,
0,ToolBar1.Handle,@Rc);
end;
  但如何在一个程序中,通过API函数,使得放在另一个程序的ToolBar控件中的菜单下拉呢?
  这个问题过去问过,可能是我说得不清楚,没有得到上点子的答复,这次应该说得比较清楚了吧,如果还没有人能回答的话,只能说“唉!大侠呢?”。
  为解决这个问题,我看过了《Delphi下深入Windows核心编程》一书,受益匪浅。
  但拜读到第10章,屏幕取词的例子第482页“遍历所有菜单项”函数时,我发现,如果是“记事本”一类窗口的菜单,可以用本函数实现遍历菜单,但遇到如“Word”、“Delphi”这些程序中的菜单时,并不能实现“遍历菜单”。在网上(http://www.china-askpro.com)查到一份资料,说“使用API GetMenu()动态获取应用程序的菜单项”,“对于象IE4这样的使用ReBar风格菜单的软件,目前还没有特别好的通用的办法来实现动态获取应用程序的菜单项。”(98年的话)。现在我也搞不清楚是我笨,还是某些资料没有问题了。  万望大侠们百忙之中,为学生解答。
    电子邮件:[email protected]