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