--lua
local GA_ROOTOWNER = 3
local MF_BYPOSITION = 0x00000400
local ffi = require("ffi")
ffi.cdef[[
int GetMenu(int hwnd);
int GetAncestor(int hwnd, unsigned int gaFlags);
int GetMenuItemCount(int hmenu);
int GetMenuStringA(int hmenu, unsigned int idItem, char* lpsz, int cbMax, unsigned int fuFlags);
]]
-- Ctrl+A привязка к окну, можно проверить на окне пилота или блокнота
log 'clear' log 'mode compact'
local h_menu = ffi.C.GetMenu(ffi.C.GetAncestor(workwindow(), GA_ROOTOWNER))
if h_menu > 0 then
local count_menu_item = ffi.C.GetMenuItemCount(h_menu)
log('Количество элементов в меню: ' .. tostring(count_menu_item))
for i=0, count_menu_item-1 do
local len_str = ffi.C.GetMenuStringA(h_menu, i, nil, 0, MF_BYPOSITION)
local name_item = ffi.new('char[?]', len_str+1)
ffi.C.GetMenuStringA(h_menu, i, name_item, ffi.sizeof(name_item), MF_BYPOSITION)
log(ffi.string(name_item))
end
else
log('У окна нет меню')
end