如何判断特定应用程序是否打开并检索其 window 句柄?
How to tell if a specific app is open and retrieve its window handle?
我们如何检测应用程序是否已打开并获取其应用程序对象的句柄?
以前,用figure
,在图'Tag'
上用一些findobj
是实用的。然后,我们可以检查它是否存在,并检索图形的内容。但是我没有找到如何用应用程序管理它。
通常:我有一个主应用程序,当我点击一个按钮时它会打开一个新应用程序 window。然后,如果我再次点击按钮,我想检查第二个应用 window 是否已经打开,如果是,则获取它的应用对象,或者删除第二个 window,等等。我怎样才能捕捉到这个?有没有办法用 findobj
或类似的函数来捕获它?
如果我可以通过使用 get/setappdata
保存应用程序对象来避免这样做,那就太好了。
要获取另一个 window 的句柄,我建议在您的主应用 class 中创建一个新的 属性 来存储第 2nd 应用程序句柄,初始化为空图形句柄 (gobjects(0)
)。然后,在执行按钮回调期间,您检查这是否是一个有效句柄 (~isempty(h) &&
isvalid(h)
),并根据结果创建一个新的 uifigure 或使用现有的。
如果您坚持要获得图形句柄列表,然后检查它并尝试根据已知属性(例如 uifigure Name
找到正确的句柄,您可以使用 this 答案:
hFigs = findall(groot, 'Type', 'figure');
如果区分figure/uifigurewindows是required/helpful,之后还可以使用技巧:
hUIFigs = hFigs(arrayfun(@(x)isstruct(struct(x).ControllerInfo), hFigs));
或者,要判断某个应用程序是否打开,您可以调用以下命令 undocumented function:
webWindows = matlab.internal.webwindowmanager.instance.findAllWebwindows();
然后将返回对象的 'Title'
字段与您要查找的对象进行比较。
我们如何检测应用程序是否已打开并获取其应用程序对象的句柄?
以前,用figure
,在图'Tag'
上用一些findobj
是实用的。然后,我们可以检查它是否存在,并检索图形的内容。但是我没有找到如何用应用程序管理它。
通常:我有一个主应用程序,当我点击一个按钮时它会打开一个新应用程序 window。然后,如果我再次点击按钮,我想检查第二个应用 window 是否已经打开,如果是,则获取它的应用对象,或者删除第二个 window,等等。我怎样才能捕捉到这个?有没有办法用 findobj
或类似的函数来捕获它?
如果我可以通过使用 get/setappdata
保存应用程序对象来避免这样做,那就太好了。
要获取另一个 window 的句柄,我建议在您的主应用 class 中创建一个新的 属性 来存储第 2nd 应用程序句柄,初始化为空图形句柄 (gobjects(0)
)。然后,在执行按钮回调期间,您检查这是否是一个有效句柄 (~isempty(h) &&
isvalid(h)
),并根据结果创建一个新的 uifigure 或使用现有的。
如果您坚持要获得图形句柄列表,然后检查它并尝试根据已知属性(例如 uifigure Name
找到正确的句柄,您可以使用 this 答案:
hFigs = findall(groot, 'Type', 'figure');
如果区分figure/uifigurewindows是required/helpful,之后还可以使用
hUIFigs = hFigs(arrayfun(@(x)isstruct(struct(x).ControllerInfo), hFigs));
或者,要判断某个应用程序是否打开,您可以调用以下命令 undocumented function:
webWindows = matlab.internal.webwindowmanager.instance.findAllWebwindows();
然后将返回对象的 'Title'
字段与您要查找的对象进行比较。