|
Меню окна, подскажите плз!, Как работать с главным меню программы? |
|
|
|
  |
Ответов
cirus |
6.12.2020, 13:57
|

         
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26758
Пользователь №: 16.971
Возраст: 29

|
Цитата В конце кода, требуется ещё - нажать "Сохранить", - затем подтвердить перезапись существующего файла -вывести какое-нибудь сообщение в углу на пару секунд об удачном сохранении код
Код --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); int FindWindowExA(int hWndParent, int hWndChildAfter, const char* lpszClass, const char* lpszWindow); ]] 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) -- отправить сообщение пункту меню
-- поиск окна сохранения настроек local timeout = os.clock() + 3 -- 3 секунды ожидание появления окна local save_settings repeat save_settings = findwindow ("Выберите файл для сохранения текущих настроек") wait (10) until save_settings or os.clock() > timeout if os.clock() >= timeout then -- окно с настройками не открылось log('Окно сохранения настроек не найдено') end_script() end
-- поиск кнопки сохранения настроек local save_button = ffi.C.FindWindowExA(save_settings[1][1], 0, 'Button', 'Со&хранить') if save_button ~= 0 then workwindow(save_button) left (10, 10) -- клик на кнопку else log('Кнопка Сохранить не найдена') end_script() end
-- поиск окна для подтверждения сохранения настроек local confirm_save timeout = os.clock() + 3 repeat confirm_save = findwindow ("Подтвердить сохранение в виде") wait (10) until confirm_save or os.clock() > timeout if os.clock() >= timeout then log('Окно подтверждения настроек не найдено') end_script() end
-- поиск кнопки Да local temp = getwindow (confirm_save[1][1], 'CHILD') local temp2 = ffi.C.FindWindowExA(temp, 0, 'CtrlNotifySink', nil) local yes_button=ffi.C.FindWindowExA(temp2, 0, 'Button', '&Да') if yes_button == 0 then while temp2 ~= 0 do temp2 = ffi.C.FindWindowExA(temp, temp2, 'CtrlNotifySink', nil) yes_button=ffi.C.FindWindowExA(temp2, 0, 'Button', '&Да') if yes_button ~=0 then break end end end if yes_button ~= 0 then workwindow(yes_button) left (10, 10) -- клик на кнопку else log('Кнопка Да не найдена') end_script() end
hint ('Готово') else log('Не получен хенд подменю или id итема подменю') end else log('У окна нет меню') end else log('Окно не найдено') end Цитата На сколько сложно реализовать сортировку окон по рабочим столам Не знаю какая функция winapi выполняет перемещение окна на другой рабочий стол.
|
|
|
|
Сообщений в этой теме
for2 Меню окна, подскажите плз! 4.12.2020, 17:48 cirus --lua
local GA_ROOTOWNER = 3
local MF_BYPOSITION =... 5.12.2020, 3:04 FREEON Скорее всего имелось ввиду нажатие кнопок по их им... 5.12.2020, 9:06 cirus
Любые манипуляции с окнами выполняются через send... 5.12.2020, 9:39 for2
Любые манипуляции с окнами выполняются через send... 5.12.2020, 10:08 cirus
--lua
local WM_COMMAND = 0x0111
local ffi = requi... 5.12.2020, 17:23 for2
Пилот версии 2.41 или выше. Горячие клавиши для з... 5.12.2020, 18:01 for2
[spoiler=код][code]--lua
local WM_COMMAND = 0x011... 6.12.2020, 6:09  Fors1k И ещё такая просьба,
На сколько сложно реализоват... 7.12.2020, 18:21 cirus Без понятия, у меня нет этой проги, используйте ст... 5.12.2020, 18:17 for2
Без понятия, у меня нет этой проги, используйте с... 5.12.2020, 19:08 cirus
--lua
wait(3000) -- пауза 3 секунды ... 5.12.2020, 19:24 for2
--lua
wait(3000) -- пауза 3 секунды ... 5.12.2020, 19:34 for2
--lua
wait(3000) -- пауза 3 секунды ... 6.12.2020, 16:19 cirus
Этот код не может такого писать. 5.12.2020, 19:38 for2
Этот код не может такого писать.
https://s8.host... 5.12.2020, 19:46 cirus А первую строку копировать кто будет?
--lua 5.12.2020, 19:50 for2
А первую строку копировать кто будет?
--lua
мля.... 5.12.2020, 19:56 cirus
Смотрите примеры тут: https://uopilot.uokit.com/w... 5.12.2020, 20:05 for2
Если что-то непонятно, то поможем.
Благодарю, эт... 5.12.2020, 20:07 for2
Не знаю какая функция winapi выполняет перемещен... 6.12.2020, 15:00 cirus
--lua
alarm()
Это работает только в стар... 6.12.2020, 16:44 for2
Не путайте старый синтаксис пилота и луа. Список ... 6.12.2020, 17:30 cirus
Пожалуй, да. 6.12.2020, 17:56 for2
Пожалуй, да.
Хорошо, можно ли организовать ввод ... 6.12.2020, 19:46  Fors1k
- после нажатия горячей клавиши скрипт ждет ввода... 8.12.2020, 20:02   for2
- Вводить имя окна с учетом регистра, например: [... 9.12.2020, 16:51 cirus А не проще вызывать нужное окно при нажатии комбин... 6.12.2020, 20:22 for2
А не проще вызывать нужное окно при нажатии комби... 8.12.2020, 16:51 for2
А не проще вызывать нужное окно при нажатии комби... 8.12.2020, 17:28 cirus
Скачать архив LuaWindow.zip из этой темы: https:/... 9.12.2020, 2:26 for2
Скачать архив LuaWindow.zip из этой темы: [url=ht... 9.1.2021, 18:36 cirus
Как-то так:
--lua
local WM_COMMAND = 0x0111
local... 9.1.2021, 23:50 for2
Как-то так:
Офигительно! Буду тестить, спаси... 10.1.2021, 19:19 for2 Да, строка "может надо, может нет" оказа... 10.1.2021, 19:35 for2
Как-то так:
[spoiler=код][code]--lua
local WM_COM... 13.2.2021, 11:13 cirus local handle = findwindow('Canon iP2700... 13.2.2021, 11:24 for2
local handle = findwindow('Canon iP2700... 13.2.2021, 11:47 cirus Вот так:
showwindow(handle[1][1... 13.2.2021, 11:56 for2
Вот так:
showwindow(handle[1][1... 13.2.2021, 12:03 for2
Вот так:
showwindow(handle[1][1... 19.2.2021, 16:46 cirus
Есть, но времени на это нет. 20.2.2021, 2:43 for2
Есть, но времени на это нет.
Можно вас попросить... 25.2.2021, 19:08 cirus
https://forum.uokit.com/index.php?s=&sh...st... 27.2.2021, 1:35 for2
https://forum.uokit.com/index.php?s=&sh...st... 28.2.2021, 7:38
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|