相关疑难解决方法(0)

Mac/Cocoa - 使用Accessibility API获取窗口列表

我想使用Accessibility API获取给定应用程序(外部)的所有窗口的列表.

目标是检查某个窗口是否打开.首先,我检查应用程序是否正在运行(使用[NSWorkspace runningApplications]并检查每个应用程序),然后我想检查为该应用程序打开的每个窗口的标题栏文本.

PS

所以我可以使用PID为app创建一个元素:

AXUIElementRef app = AXUIElementCreateApplication(pid);
Run Code Online (Sandbox Code Playgroud)

但我该怎么办呢?我是否朝着正确的方向前进?不能相信它很难找到这方面的例子.

cocoa accessibility

6
推荐指数
2
解决办法
9183
查看次数

从CGWindowListCopyWindowInfo获取NSWindow*

我已经完成了列出所有窗口(按照从前到后的顺序,我认为/希望)使用,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)

macos core-graphics objective-c core-foundation

6
推荐指数
1
解决办法
2474
查看次数

Mac 有 FindWindow() 替代品吗?

我正在将一个应用程序移植到 Mac OS X。它使用 FindWindow()。具体功能如下:

FindWindow(NULL,“我的应用程序”)

然而,这在 Mac 上不起作用。Mac OS X 是否有类似的功能,或者更好的是,是否有通用功能?

我试图通过功能在“应用程序的主窗口”中使用它。

c++ windows macos function

5
推荐指数
1
解决办法
2317
查看次数