_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