2016-07-31 9 views
2

Я пишу сценарий node.js, который будет запускаться на компьютере Mac. Я хотел бы получить координаты приложения, запущенного на переднем плане и детали процесса.Как получить координаты окна приложения, работающего на переднем плане на Mac с помощью Node.js?

Например, если я бегу сценарий и единственная программа, у меня открыты, Google Chrome, то я должен получить массив с 1 объект, содержащий:

  • в Google Chrome процесс ID
  • х/у координаты окна Google Chrome.

До сих пор все, что я мог сделать, это получить список запущенных процессов:

  • ps-node: Утилита процесс поиска

Если это поможет, я также буду использовать рамки nw.js для запуска моего приложения.

ответ

2

Вы можете использовать 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'); 
+0

Стоп, это круто. Не думал об этом. Позвольте мне попробовать это и отчитаться. Вид связанного вопроса: если я теперь хотел расширить эту функциональность до Windows 7+, как бы я это сделал? 'NodObjC', вероятно, не работает в Windows. –

+1

В Windows попробуйте вызвать 'FindWindow' из' user.dll' - https://github.com/node-ffi/node-ffi –

 Смежные вопросы

  • Нет связанных вопросов^_^