我正在编写一个lua程序,该程序需要调用另一个活动程序(环境是Windows)作为外部库/API提供的外部弹出窗口(我们称之为Poppy)。
Poppy有一个坏习惯;当被调用时,它会弹出,完成它的工作,然后消失 - 将当前的Lua对话框隐藏在Poppy的父程序后面。
打电话给罂粟后,dlg.BRINGFRONT="YES"
会把iup对话框dlg
带到前面。
有没有一种技术来确定dlg
应该是什么 - 即在调用外部API之前最顶层的iup对话框是什么?
我已经阅读了iup文档,但看不到执行此操作的方法。但是,由于我需要在大量实例中调用 Poppy,因此我想简化将当前对话框置于前面的过程。
我这样调用罂粟
:local res = Poppy('INDI')
dlg.BRINGFRONT="YES"
return res
在Windows中调用Poppy的代码中,您可以调用:
HWND dlg_handle = GetActiveWindow();
然后当罂粟回来时,打电话:
SetForegroundWindow(dlg_handle);
我已经使用 Winapi 库和以下代码成功地做到了这一点:
winapi = require ("winapi")
currentwin = winapi.get_foreground_window()
--invoke Poppy here and wait for control to return
currentwin:set_foreground()