Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1680664
  • 博文数量: 584
  • 博客积分: 13857
  • 博客等级: 上将
  • 技术积分: 11883
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 09:34

分类: WINDOWS

2011-08-11 15:29:39

handle   hmenu=GetMenu(hfind);//取总菜单局柄
handle   hsubmenu=GetSubMenu(hmenu,0);//取分菜单的第一项(通常是文件)
handle   hsubinsubmenu=GetSubMenu(hsubmenu,0);//取hsubmenu的子菜单第一项(通常是new/open)
PostMessage(hsubinsubmenu,WM_KEYDOWN,VK_RETURN,0);//向hsubinsubmenu传一个回车消息——即打开这个菜单


上面的方法,对传统的菜单有效。但是现在越来越多的程序,使用IE式的菜
单。IE式的菜单,并不是真正的菜单。他是用一个工具条和工具条上的按钮
模拟的。也就是说,窗口根本没有真正意义上的菜单,此时用GetMenu(hWnd)
得到的为NULL。既然,这个菜单有快捷键,可以给你提供一个方法(假设这
个窗口的句柄为hWnd):
SetForegroundWindow(hWnd);
keybd_event(VK_MENU,   0,   0,   0);     //模拟按下Alt键
keybd_event( 'C ',   0,   0,   0);     //模拟按下C键
Sleep(10);     //稍微等待一会儿,如果有问题,增加等待的时间
keybd_event( 'C ',   KEYEVENTF_KEYUP,   0,   0);     //模拟松开C键
keybd_event(VK_MENU,   KEYEVENTF_KEYUP,   0,   0);     //模拟松开Alt键
阅读(870) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~