我想使用Accessibility API获取给定应用程序(外部)的所有窗口的列表.
目标是检查某个窗口是否打开.首先,我检查应用程序是否正在运行(使用[NSWorkspace runningApplications]并检查每个应用程序),然后我想检查为该应用程序打开的每个窗口的标题栏文本.
PS
所以我可以使用PID为app创建一个元素:
AXUIElementRef app = AXUIElementCreateApplication(pid);
Run Code Online (Sandbox Code Playgroud)
但我该怎么办呢?我是否朝着正确的方向前进?不能相信它很难找到这方面的例子.
我已经完成了列出所有窗口(按照从前到后的顺序,我认为/希望)使用,CGWindowListCopyWindowInfo但我有一个问题得到NSWindow*它,所以我可以使用orderFront:等.
看来我甚CGWindowID至都没有得到它.
这是我的代码,它是js-ctypes.
var cfarr_win = ostypes.API('CGWindowListCopyWindowInfo')(ostypes.CONST.kCGWindowListOptionAll | ostypes.CONST.kCGWindowListExcludeDesktopElements, ostypes.CONST.kCGNullWindowID);
var cnt_win = ostypes.API('CFArrayGetCount')(cfarr_win);
for (var i = 0; i < cnt_win; i++) {
var thisWin = {};
// trying to get NSWindow* to the window here, so i can use with orderFront: etc
// example on how i get pid:
var rez_pid = ostypes.API('objc_msgSend')(c_win, ostypes.HELPER.sel('objectForKey:'), myNSStrings.get('kCGWindowOwnerPID'));
var int_pid = ostypes.API('objc_msgSend')(rez_pid, ostypes.HELPER.sel('integerValue'));
thisWin.pid = int_pid;
// How can I get NSWindow*
} …Run Code Online (Sandbox Code Playgroud) 我正在将一个应用程序移植到 Mac OS X。它使用 FindWindow()。具体功能如下:
FindWindow(NULL,“我的应用程序”)
然而,这在 Mac 上不起作用。Mac OS X 是否有类似的功能,或者更好的是,是否有通用功能?
我试图通过此功能在“应用程序的主窗口”中使用它。