识别活动的 iup 对话框

我正在编写一个 Lua 程序,需要调用另一个活动程序(环境为 Windows)提供的外部弹出窗口(称为 Poppy)作为外部库/API。

Poppy 有个坏习惯:当被调用时,它会弹出,执行它的工作,然后消失——将当前的 Lua 对话框隐藏在 Poppy 的父程序后面。

在调用 Poppy 之后,dlg.BRINGFRONT="YES" 将 iup 对话框 dlg 带到前面。

有没有一种技术来识别应该是什么 dlg —— 即在调用外部 API 之前最上层的 iup 对话框是什么?

我已经阅读了 iup 文档,但找不到方法来实现这一点。但是,因为我需要在大量实例中调用 Poppy,所以我想简化将当前对话框带到前面的过程。

我这样调用 Poppy:

local res = Poppy('INDI')
dlg.BRINGFRONT="YES"
return res
点赞
用户1898478
用户1898478

在调用Windows中的Poppy代码中,您可以调用:

HWND dlg_handle = GetActiveWindow();

然后当Poppy返回时,调用:

SetForegroundWindow(dlg_handle);
2019-01-09 13:46:08
用户1943174
用户1943174

我已经成功地使用 Winapi 库 和以下代码实现了这一点:

winapi = require ("winapi")
currentwin = winapi.get_foreground_window()
--在这里调用 Poppy 并等待控制返回
currentwin:set_foreground()
2019-01-10 17:13:09