在OS X> = 10.9中不推荐使用CGDisplayIOServicePort,如何替换?

朱尼佩里

我做了一个小型应用程序,以允许在多台显示器上快速更改屏幕分辨率。我想将产品名称显示为监视器的标题,使用此代码可以很容易地找到它:

NSDictionary *deviceInfo = (__bridge NSDictionary *)IODisplayCreateInfoDictionary(CGDisplayIOServicePort(dispID), kIODisplayOnlyPreferredName);

NSDictionary *localizedNames = [deviceInfo objectForKey:[NSString stringWithUTF8String:kDisplayProductName]];

if([localizedNames count] > 0) {
    _title = [localizedNames objectForKey:[[localizedNames allKeys] objectAtIndex:0]];
} else {
    _title = @"Unknown display";
}

但是CGDisplayIOServicePort在OS X> = 10.9中已弃用,Apple的文档说没有替代品。不使用此方法如何查找服务端口或产品名称?

我试图遍历IO注册表并尝试使用IOServiceGetMatchingServices方法来查找显示服务,但是我对IO注册表不是很熟悉,因此找不到解决方案。

感谢帮助!

宏志

@Eun的帖子似乎错过了一些信息,无法结束本次讨论。稍作搜索,我发现IOServicePortFromCGDisplayID不是Apple提供的API。而是在这里找到了一段开源代码:https : //github.com/glfw/glfw/blob/e0a6772e5e4c672179fc69a90bcda3369792ed1f/src/cocoa_monitor.m

我复制了IOServicePortFromCGDisplayID,还从中复制了“ getDisplayName”。我需要进行两项调整才能使其在OS X 10.10上运行。

  1. 删除代码以处理IOServicePortFromCGDisplayID中的序列号。(kDisplaySerialNumber的CFDictionaryGetValue为我返回NULL。)
  2. 在getDisplayName中删除项目特定的错误处理代码。

如果您需要更多信息

  • 问题的问题跟踪器:github.com/glfw/glfw/issues/165
  • 提交解决方案:github.com/glfw/glfw/commit/e0a6772e5e4c672179fc69a90bcda3369792ed1f

我要感谢Matthew Henry在此处提交了代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Mac OS(OS X)中登录时启动Shell脚本

来自分类Dev

Cabal 1.18在OS X的几乎所有设备上都给出了总线错误10

来自分类Dev

如何在OS X中打印MKMapView?

来自分类Dev

如何使用Sip或其他方式以编程方式使Mac OS X ICNS具有10个不同的图像

来自分类Dev

在OS X中打开文件

来自分类Dev

从OS X使用DualShock 4

来自分类Dev

为什么OS X 10.10 Yosemite的NSApplication.h中未包含NSAppKitVersionNumber10_10?

来自分类Dev

OS X版本10.10中不推荐使用'YearCalendarUnit':改用NSCalendarUnitYear

来自分类Dev

在OS X 10.9中不推荐使用'gluErrorString'。为什么?

来自分类Dev

在不使用不推荐使用的AudioHardwareServiceSetPropertyData API的情况下,使用Swift在OS X 10.11中设置OS X卷

来自分类Dev

OS X中的brew更新

来自分类Dev

iOS 10中不推荐使用UILocalNotification

来自分类Dev

如何在带有Clang的Mac OS X中从Float 128(尺寸16)中指定Float 80(尺寸10)?

来自分类Dev

如何清除OS X中的“最近的项目”?

来自分类Dev

Wi-Fi在Mac OS X上每10分钟停止工作

来自分类Dev

在OS X> = 10.9中不推荐使用CGDisplayIOServicePort,如何替换?

来自分类Dev

如何覆盖OS X中的文件主机?

来自分类Dev

在OS X中,如何从时钟查看日历?

来自分类Dev

OS X中的独立R

来自分类Dev

如何像在OS X中一样在Windows 10上切换语言?

来自分类Dev

在C ++中打印9x9数组而不是10x10数组?

来自分类Dev

在OS X 10.9中不推荐使用'gluErrorString'。为什么?

来自分类Dev

如何使用OS X的Swift创建NSCollectionView

来自分类Dev

Win10与OS X中纯文本的区别

来自分类Dev

在不使用不推荐使用的AudioHardwareServiceSetPropertyData API的情况下,使用Swift在OS X 10.11中设置OS X卷

来自分类Dev

在Atlassian JIRA插件中为7.X替换不推荐使用的AbstractEditHandlerDetailsWebAction

来自分类Dev

如何在Windows 10上安装mac OS X ElCapitan

来自分类Dev

OS X中的brew更新

来自分类Dev

如何创建 10 x 10 网格

Related 相关文章

  1. 1

    在Mac OS(OS X)中登录时启动Shell脚本

  2. 2

    Cabal 1.18在OS X的几乎所有设备上都给出了总线错误10

  3. 3

    如何在OS X中打印MKMapView?

  4. 4

    如何使用Sip或其他方式以编程方式使Mac OS X ICNS具有10个不同的图像

  5. 5

    在OS X中打开文件

  6. 6

    从OS X使用DualShock 4

  7. 7

    为什么OS X 10.10 Yosemite的NSApplication.h中未包含NSAppKitVersionNumber10_10?

  8. 8

    OS X版本10.10中不推荐使用'YearCalendarUnit':改用NSCalendarUnitYear

  9. 9

    在OS X 10.9中不推荐使用'gluErrorString'。为什么?

  10. 10

    在不使用不推荐使用的AudioHardwareServiceSetPropertyData API的情况下,使用Swift在OS X 10.11中设置OS X卷

  11. 11

    OS X中的brew更新

  12. 12

    iOS 10中不推荐使用UILocalNotification

  13. 13

    如何在带有Clang的Mac OS X中从Float 128(尺寸16)中指定Float 80(尺寸10)?

  14. 14

    如何清除OS X中的“最近的项目”?

  15. 15

    Wi-Fi在Mac OS X上每10分钟停止工作

  16. 16

    在OS X> = 10.9中不推荐使用CGDisplayIOServicePort,如何替换?

  17. 17

    如何覆盖OS X中的文件主机?

  18. 18

    在OS X中,如何从时钟查看日历?

  19. 19

    OS X中的独立R

  20. 20

    如何像在OS X中一样在Windows 10上切换语言?

  21. 21

    在C ++中打印9x9数组而不是10x10数组?

  22. 22

    在OS X 10.9中不推荐使用'gluErrorString'。为什么?

  23. 23

    如何使用OS X的Swift创建NSCollectionView

  24. 24

    Win10与OS X中纯文本的区别

  25. 25

    在不使用不推荐使用的AudioHardwareServiceSetPropertyData API的情况下,使用Swift在OS X 10.11中设置OS X卷

  26. 26

    在Atlassian JIRA插件中为7.X替换不推荐使用的AbstractEditHandlerDetailsWebAction

  27. 27

    如何在Windows 10上安装mac OS X ElCapitan

  28. 28

    OS X中的brew更新

  29. 29

    如何创建 10 x 10 网格

热门标签

归档