鉴于有应用程序在全屏模式下运行,我想知道是否有一种使用JXA列出应用程序的方法。类似于以下内容,但适用于所有正在运行的全屏应用程序。
var list = Application('System Events').applicationProcesses.where({ backgroundOnly: false }).windows.name();
用例:我正在尝试创建一个Alfred工作流,以按名称浏览全屏应用程序。
谢谢!
干得好:
ObjC.import('CoreGraphics');
unwrap = ObjC.deepUnwrap.bind(ObjC);
(function run() {
const bounds = x => ['X', 'Y', 'Width', 'Height'].map(k => x.kCGWindowBounds[k]);
const windowInfo = unwrap($.CGWindowListCopyWindowInfo(
$.kCGWindowListOptionAll,
$.kCGNullWindowID)),
applicationWindows = windowInfo.filter(x => x.kCGWindowLayer==0),
menubar = windowInfo.filter(x => x.kCGWindowName=='Menubar')[0],
desktop = windowInfo.filter(x => x.kCGWindowName=='Desktop')[0],
fullframe = bounds(desktop);
return applicationWindows.filter(x => {
return bounds(x).reduce((ξ, y, i) => {
return ξ && (y==fullframe[i]);
}, true);
}).map(x => x.kCGWindowOwnerName);
})();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句