0

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

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

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

是否有一种技术可以确定dlg应该是什么——即在调用外部 API 之前最顶层的 iup 对话框是什么?

我已经阅读了 iup 文档,但看不到这样做的方法。但是,由于我需要在大量实例中调用 Poppy,我想简化将当前对话框置于最前面的过程。

我这样调用罂粟:

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

2 回答 2

0

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

winapi = require ("winapi")
currentwin = winapi.get_foreground_window()
--invoke Poppy here and wait for control to return
currentwin:set_foreground()
于 2019-01-10T17:13:09.820 回答
0

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

HWND dlg_handle = GetActiveWindow();

然后当 Poppy 返回时,调用:

SetForegroundWindow(dlg_handle);
于 2019-01-09T13:46:08.053 回答