nekin 发表于 2010-3-2 13:53:46

怎样获取记事本中的所有菜单和菜单项?

怎样获取记事本中的所有菜单和菜单项?

afan 发表于 2010-3-2 15:16:00

#include <GuiMenu.au3>
Run('Notepad.exe')
WinWaitActive('')
$hWnd = WinGetHandle('')
$hMain = _GUICtrlMenu_GetMenu($hWnd)
$str = ''
$n_Menu = _GUICtrlMenu_GetItemCount($hMain)
For $i = 0 To $n_Menu - 1
        $str &= _GUICtrlMenu_GetItemText($hMain, $i) & @CRLF & '==================' & @CRLF
        $hFile = _GUICtrlMenu_GetItemSubMenu($hMain, $i)
        $n_SubMenu = _GUICtrlMenu_GetItemCount($hFile)
        For $x = 0 To $n_SubMenu - 1
                $ss = _GUICtrlMenu_GetItemText($hFile, $x)
                If $ss = '' Then $ss = '————————————'
                $str &= '      ' & $ss & @CRLF
        Next
        $str &= @CRLF & @CRLF
Next
MsgBox(0, 0, $str)
WinClose($hWnd)

nekin 发表于 2010-3-2 15:55:06

回复 2# afan

   原来这样,十分感谢!*_*
   请问一下,有没有函数判断:当前菜单项是否可用?

afan 发表于 2010-3-2 15:59:35

回复 3# nekin


_GUICtrlMenu_GetItemEnabled
获取菜单项可用状态

#Include <GuiMenu.au3>
_GUICtrlMenu_GetItemEnabled($hMenu, $iItem[, $fByPos = True])

参数
$hMenu
菜单句柄
$iItem
菜单项位置或标识
$fByPos
菜单认证标记:
真 - $iItem为0基的菜单位置
假 - $iItem为菜单项标识

返回值
真: 项目可用
假: 项目不可用

nekin 发表于 2010-3-2 18:21:35

回复 4# afan

    谢谢你啦!
    _GUICtrlMenu_GetItemEnabled:当菜单项是灰色的时候返回的也是true
   请问,怎么判断菜单项是灰色(不可用)的状态啊?

nekin 发表于 2010-3-2 18:35:42

回复 5# nekin


    麻烦你了,刚才没看到_GUICtrlMenu_GetItemGrayed,嘿嘿

nekin 发表于 2010-3-2 18:47:53

回复 6# nekin


   为什么 _GUICtrlMenu_GetItemGrayed 返回的结果有的不对呢?

catcher 发表于 2010-3-2 21:41:00

学习了:face (20):

hzxymkb 发表于 2010-3-2 21:57:02

afan 真是高手!这都能做的到!佩服!

weeks1 发表于 2010-3-3 06:55:29

说得不错 再看一次

zmj2008 发表于 2010-3-3 11:47:41

说得不错 再看一次

hmily 发表于 2010-3-5 11:31:35

正需要呢,太好了,收藏了!

hmily 发表于 2010-3-5 11:37:50

回复 2# afan


    afan 你好,我刚开始接触autoit,请问怎样获取 记事本 中的弹出式菜单的所有信息啊?比如说菜单、菜单项?我尝试了很多办法,没做出来!

afan 发表于 2010-3-5 11:48:08

回复 13# hmily


    不懂你指的…… 2#不就是菜单、菜单项

hmily 发表于 2010-3-5 11:53:49

回复 14# afan


    我想获取的是 右键菜单的菜单项?比如说在记事本的编辑区,点击右键,弹出菜单的菜单项。
页: [1]
查看完整版本: 怎样获取记事本中的所有菜单和菜单项?