Идентификация активного iup-диалога - PullRequest
0 голосов
/ 09 января 2019

Я пишу программу lua, которая должна вызывать внешнее всплывающее окно (назовем его Poppy), предоставляемое в качестве внешней библиотеки / API другой активной программой (среда - Windows).

У мака есть вредная привычка; при вызове он всплывает, выполняет свою работу и затем исчезает, оставляя текущий диалог Lua скрытым за родительской программой Поппи.

После вызова Poppy, dlg.BRINGFRONT="YES" выведет диалог iup dlg на передний план.

Существует ли метод определения того, каким dlg должен быть, т. Е. Каким был самый верхний диалог iup до вызова внешнего API?

Я прочитал документацию по iup и не могу найти способ сделать это. Однако, поскольку мне нужно вызывать Poppy во многих случаях, я хотел бы упростить процесс вывода текущего диалога на передний план.

Я вызываю Поппи так:

local res = Poppy('INDI')
dlg.BRINGFRONT="YES"
return res

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Мне удалось это сделать с помощью библиотеки Winapi и следующего кода:

winapi = require ("winapi")
currentwin = winapi.get_foreground_window()
--invoke Poppy here and wait for control to return
currentwin:set_foreground()
0 голосов
/ 09 января 2019

Внутри кода, который вызывает Poppy в Windows, вы можете позвонить:

HWND dlg_handle = GetActiveWindow();

Затем, когда Поппи вернется, позвоните:

SetForegroundWindow(dlg_handle);
...