Ребята, подскажите, куда копать! Есть программа InqSoft Window Scanner - просматривает главное меню окна любой программы, видит ID пунктов меню и позволяет на них нажимать и т.д. Как при помощи UOPilot так же работать с главным меню программы через скрипты, просматривать структуру меню и работать с дочерними окнами??
--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
Цитата
и работать с дочерними окнами
Что именно хотите сделать? Getwindow если нужно найти дочернее окно.