Функция _GUICtrlMenu_GetSystemMenu

         Описание функции


_GUICtrlMenu_GetSystemMenu

Даёт приложению доступ к системному меню окна для копирования и модификации

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

Параметры

$hWnd Дескриптор окна, которое получит копию меню
$fRevert [необязательный] Определяет действие функции
    False - возвращает дескриптор копии системного меню окна, используемой в данный момент. Создаётся точная копия системного меню, но с возможностью модификации.
    True - сбрасывает системное меню окна по умолчанию. Предыдущая копия системного меню, если имеются, удаляется.

Возвращаемое значение

Возвращает дескриптор копии меню, если $fRevert = False Возвращает 0, если $fRevert = True

Примечания

Любое окно, которое не использует функцию GetSystemMenu для создания собственной копии системного меню, получает стандартное системное меню окна. Системное меню окна изначально содержит системные пункты меню с различными идентификаторами, такие как $SC_CLOSE, $SC_MOVE и $SC_SIZE. Системные пункты меню высылают сообщения $WM_SYSCOMMAND. Все встроенные системные пункты имеют идентификатор в виде числа, большего чем 0xF000. Если приложение добавляет команды в системное меню окна, то необходимо использовать идентификатор в виде числа, меньшего чем 0xF000. Система автоматически делает серыми пункты системного меню окна, в зависимости от ситуации. Приложение может выполнить собственную проверку или сделать серыми пункты, реагируя на сообщение $WM_INITMENU, которое высылается до того как отобразить меню.

См. также

Искать GetSystemMenu в библиотеке MSDN

Пример

#include <GuiMenu.au3>

_Main()

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

    ; Запуск блокнота
    Run("notepad.exe")
    $hWnd = WinWaitActive("[CLASS:Notepad]")
    $hMenu = _GUICtrlMenu_GetSystemMenu($hWnd)

    ; Вставляет пункт в системное меню
    _GUICtrlMenu_InsertMenuItem($hMenu, 5, 'Элемент вставленный')

    ; Отображает системное меню
    $iCount = _GUICtrlMenu_GetItemCount($hMenu)
    Writeln($hWnd, "Дескриптор системного меню: 0x" & Hex($hMenu))
    Writeln($hWnd, "Количество пунктов .......: " & $iCount)
    For $iI = 0 To $iCount - 1
        Writeln($hWnd, "Пункт " & $iI & " текста ......: " & _GUICtrlMenu_GetItemText($hMenu, $iI))
    Next

EndFunc   ;==>_Main

; Записывает строку текста в блокнот
Func Writeln($hWnd, $sText)
    ControlSend($hWnd, "", "Edit1", $sText & @CR)
EndFunc   ;==>Writeln