唯一标识一个 NSScreen

Ale*_*win 3 cocoa unique identifier

我正在开发一个项目,该项目具有每个显示器的设置。我希望我的应用程序支持删除和稍后重新添加的显示,可能在两者之间使用另一个显示,并在再次看到显示时应用每个显示的原始设置。

据我所知,没有办法通过 NSScreen 在当前显示配置的上下文之外唯一标识一个。我不能只使用屏幕尺寸/属性,因为用户可以在不同位置拥有多个相同型号的显示器;据我所知,这个问题适用于屏幕的所有持久属性。

有没有好的,已知的方法来做到这一点?

谢谢你的时间。任何帮助是极大的赞赏。

ash*_*tch 5

该文档-[NSScreen deviceDescription]有关获取会谈CGDirectDisplayID和文档有关CGDirectDisplayID说:

当连接显示器时,Quartz 会分配一个唯一的显示标识符 (ID)。显示 ID 可以在进程和系统重新启动后保持不变,并且只要某些显示参数不更改,它通常会保持不变。

在分配显示 ID 时,Quartz 会考虑以下参数:

  • 小贩
  • 模型
  • 序列号
  • 在 I/O Kit 注册表中的位置

这听起来非常接近您正在寻找的内容。