识别活动的iup对话框

时间:2019-01-09 12:40:00

标签: lua iup

我正在编写一个lua程序,该程序需要调用由另一个活动程序(环境是Windows)作为外部库/ 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

2 个答案:

答案 0 :(得分:0)

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

HWND dlg_handle = GetActiveWindow();

然后当Poppy返回时,致电:

SetForegroundWindow(dlg_handle);

答案 1 :(得分:0)

我已成功使用Winapi library和以下代码进行了此操作:

winapi = require ("winapi")
currentwin = winapi.get_foreground_window()
--invoke Poppy here and wait for control to return
currentwin:set_foreground()