5

我是一个新手 Cocoa 开发人员,我正在开发我的第一个应用程序。我想从任何应用程序的任何窗口中读取唯一标识符——无论是 Cocoa 还是 Carbon。Cocoa 应用程序使它们的窗口 ID 可用于 AppleScript(尽管我确信通过适当的 Objective C 路由有更好的方法来做到这一点),但我正在尝试从 Adob​​e 应用程序中的文档访问窗口 ID。这似乎要棘手得多。我在参考库中似乎只能找到HIWindowGetCGWindowID

"此函数返回窗口服务器在创建窗口时分配的窗口 ID。窗口 ID 通常不会与任何其他 Carbon 函数一起使用,但可以与其他需要窗口 ID 的 Mac OS X 函数一起使用,例如函数在 OpenGL 中。”

这可以用来从我的程序中获取 ID 吗?或者它只是一个可以在一个应用程序中使用的功能?

如果有人能指出我正确的方向,我将永远感激不尽。

4

1 回答 1

13

该函数HIWindowGetCGWindowID()只能CGWindowID为您的应用程序的一个窗口返回 a,因为WindowRef来自另一个程序的 a 在您的窗口中无效。

CGWindow.h中的函数CGWindowListCopyWindowInfo()将返回一个字典数组,每个窗口对应于您设置的条件,包括其他应用程序中的条件。它只允许您按给定窗口上方的窗口、给定窗口下方的窗口和“屏幕上”窗口进行过滤,但返回的字典包含拥有应用程序的进程 ID,您可以使用该 ID 将窗口与应用程序匹配。在每个返回的字典中,键将指向窗口 ID 作为. 还有一个函数只返回一个s 数组。除了CGWindow.h头文件和Grab示例代码之外,基本上没有这些函数的文档。此外,它只有 10.5。 kCGWindowNumberCFNumberCGWindowListCreate()CGWindowID

于 2008-11-23T03:59:17.793 回答