gpt4 book ai didi

cocoa - 获取另一个应用程序窗口的唯一 ID

转载 作者:行者123 更新时间:2023-12-03 16:12:33 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

函数 HIWindowGetCGWindowID() 只能返回您应用程序窗口之一的 CGWindowID,因为来自其他程序的 WindowRef 不会对您有效。

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

关于cocoa - 获取另一个应用程序窗口的唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/311956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com