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) |