如何使用 Node.js 在 Mac 的前景中获取应用程序 window 运行 的坐标?

How do I get the coordinates of an application window running in foreground on Mac using Node.js?

我正在编写 node.js 脚本,它将 运行 在 Mac 计算机上。我想在前台和进程详细信息中获取应用程序 运行ning 的坐标。

例如,如果我 运行 脚本和我打开的唯一程序是 Google Chrome 那么我应该得到一个包含 1 个对象的数组:

到目前为止,我所能做的就是获取 运行ning 进程的列表:

如果有帮助,我也会在 运行 我的应用程序中使用 nw.js 框架。

您可以使用 NodObjC - Node.js ⇆ Objective-C 桥:

var $ = require('nodobjc')

$.framework('Foundation');
$.framework('Cocoa');

var pool = $.NSAutoreleasePool('alloc')('init');
var result = $.CGWindowListCopyWindowInfo($.kCGWindowListExcludeDesktopElements |
                                          $.kCGWindowListOptionOnScreenOnly,
                                          $.kCGNullWindowID);
var windowList = $.CFBridgingRelease(result);

var error = $.alloc($.NSError).ref();

var jsonData = $.NSJSONSerialization('dataWithJSONObject', 
                                     windowList, 
                                     'options',
                                     $.NSJSONWritingPrettyPrinted,
                                     'error', 
                                     error);

var jsonString = $.NSString('alloc')('initWithData', 
                                     jsonData, 
                                     'encoding',                                          
                                     $.NSUTF8StringEncoding);

var parsed = JSON.parse(jsonString);

console.log(parsed);

pool('drain');