Цитата
Есть программа -1
У нее нет горячей клавиши на сохранение конфига -2
При помощи InqSoft Window Scanner я могу видеть структуру меню программы и нажать -4, чтобы начать сохранение.
Как тоже самое сделать НЕ при помощи InqSoft Window Scanner, а скриптом и горячей клавиши??
код
Код
--lua
local WM_COMMAND = 0x0111
local ffi = require("ffi")
ffi.cdef[[
int GetMenu(int hwnd);
int GetSubMenu(int hMenu, int nPos);
unsigned int GetMenuItemID(int hMenu, int nPos);
int PostMessageA(int hWnd, unsigned int Msg, unsigned int wParam, long lParam);
]]
log 'clear' log 'mode compact'
local handle = findwindow ("QUIK") -- имя окна (можно указать часть имени)
if handle then -- если окно найдено
local h_menu = ffi.C.GetMenu(handle[1][1]) -- получить хендл меню окна
if h_menu > 0 then -- если меню есть
local h_submenu = ffi.C.GetSubMenu(h_menu, 0) -- получить хендл подменю, первого по порядку (для QUIK это 'Система')
local id_item = ffi.C.GetMenuItemID(h_submenu, 5) -- получить id итема подменю, шестого по порядку (для QUIK это 'Сохранить настройки в файл')
if h_submenu and id_item then -- если существуют
ffi.C.PostMessageA(handle[1][1], WM_COMMAND, id_item, 0) -- отправить сообщение пункту меню
else
log('Не получен хенд подменю или id итема подменю')
end
else
log('У окна нет меню')
end
else
log('Окно не найдено')
end
Пилот версии 2.41 или выше. Горячие клавиши для запуска скрипта во вкладке 'Ещё'.