我一直在花时间看OSX中的窗口系统.我正在尝试了解它周围的所有信息,以获取我正在处理的捕获代码.
我想做的事我希望能够过滤我的窗口查询,以便我只抓取在任何空格中可见的窗口或在任何空格中最小化.
努力工作现在,使用SonOfGrab测试代码和文档,我创建了一个程序,可以查询窗口服务器并给我一个这样的列表:
{ "name": "Xcode", "id": 25314, "width": 16, "height": 194, "visible": "NO", "desktop": -1, "owner pid": 37319, "layer": 0 }
我过滤掉所有桌面元素,我只抓住可共享的窗口.
我学到了什么据我所知,从文档中可以看出,这是有限的,我的示例程序就是这些东西
窗口的visibility属性将告诉您它是否在当前活动空间中可见.
该层似乎很重要.据我所知,我想要过滤的窗口仅在第0层可用.看起来其他图层与停靠栏,工具栏,图标等相关.
不可见但在第0层中的项有时会最小化窗口.
以下是我使用我的代码和SonOfGrab示例所面临的问题.
在某些应用程序中,最小化的窗口和关闭的窗口似乎是相同的.例如,使用活动监视器.如果我最小化窗口或关闭它,输出是相同的.还有其他领域可以帮助我区分这个吗?这似乎是因为应用程序始终在任务栏中运行.
{ "name": "Activity Monitor", "id": 94, "width": 703, "height": 728, "visible": "NO", "desktop": -1, "owner pid": 2353, "layer": 0 },
{ "name": "Activity Monitor", "id": 94, "width": 703, "height": 728, "visible": "NO", "desktop": -1, "owner pid": 2353, "layer": 0 },
即使我过滤掉桌面元素并且只从第0层抓取,我仍然看到SystemUIServer浮动.当我试图用SonOfGrab抓住它的窗户时,我什么也得不到.有没有什么有意义的方法可以过滤除名字以外的其他方式?
不可见的窗户.使用XCODE,我注意到如果我打开了一个项目并且可以查看.我的程序和SonOfGrab将在第0层显示5个窗口.1将是可见的,其余的是不可见的.
我希望能够只列出可在任何空间中查看或最小化并且可能被查看的窗口.它似乎是可见性和层次的帮助,但也许我需要更多的窗口细节来解决这个问题.有任何想法吗 :-)?