函数参考


_GUICtrlMenu_GetSystemMenu

允许应用程序访问、复制和修改窗口菜单

#Include <GuiMenu.au3>
_GUICtrlMenu_GetSystemMenu($hWnd[, $fRevert = False])

参数

$hWnd 拥有菜单的窗口句柄
$fRevert [可选参数] 指定要采取的操作,如果此参数为 False,该函数返回当前复制的窗口菜单句柄
复制的副本与最初窗口菜单是相同的,但它可以被修改
如果这个参数为 True,函数复位窗口菜单返回到默认状态
如果窗口菜单有上级菜单,将被销毁.

返回值

如果 $fRevert 参数为 False, 则返回值是一个指向窗口菜单副本的句柄.
如果 $fRevert 参数为 True, 则返回值为 0.

注意/说明

 对于任何窗口,不使用 GetSystemMenu 函数使窗口菜单副本接收标准窗口菜单.
 窗口菜单最初包含各种标识符的值,如 $SC_CLOSE, $SC_MOVE, 与 $SC_SIZE.
 窗口菜单的菜单项发送 $WM_SYSCOMMAND 消息.
 全部预定义窗口菜单项目标识符大于 0xF000.
 如果一个应用程序添加命令到窗口菜单,它使用的标识符数目应该小于 0xF000.
 系统对标准窗口菜单得自动灰显项目,视情况而定.
 应用程序可以通过回答 $WM_INITMENU 消息,在任何菜单显示前执行自己的检查或灰显.

相关

详情参考

在MSDN中搜索


示例/演示


#include <GuiMenu.au3>

_Main()

Func _Main()
    Local $hWnd, $hMenu, $iCount, $iI

    ; 打开记事本
    Run("notepad.exe")
    WinWaitActive("[CLASS:Notepad]")
    $hWnd = WinGetHandle("[CLASS:Notepad]")
    $hMenu = _GUICtrlMenu_GetSystemMenu($hWnd)

    ; 玩弄系统菜单
    _GUICtrlMenu_InsertMenuItem($hMenu, 5, "&AutoIt")

    ; 显示系统菜单
    $iCount = _GUICtrlMenu_GetItemCount($hMenu)
    Writeln("System menu handle: 0x" & Hex($hMenu))
    Writeln("Item count .......: " & $iCount)
    For $iI = 0 To $iCount - 1
        Writeln("Item " & $iI & " text ......: " & _GUICtrlMenu_GetItemText($hMenu, $iI))
    Next

EndFunc   ;==>_Main

; 写入一行文本到记事本
Func Writeln($sText)
    ControlSend("[CLASS:Notepad]", "", "Edit1", $sText & @CR)
EndFunc   ;==>Writeln