【问题标题】:How come using setLevel: won't make the window higher than a full screen game?为什么使用 setLevel: 不会使窗口高于全屏游戏?
【发布时间】:2012-12-08 10:22:50
【问题描述】:

大多数游戏(如果不是全部)不使用 Lion 的全屏功能。他们使用非官方方法使自己全屏显示。问题是 - 无论我将窗口的级别设置多高(我目前使用的是 25 级 - 使窗口高于状态栏及其图标),它都不会出现在游戏中。我想在游戏中实现类似于Steam全屏覆盖的效果。这可能吗?

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    全屏游戏通常根本不是 Windows。大多数此类应用程序都使用 CoreGraphics 来捕获显示(请参阅CGDisplayCapture),完全绕过窗口合成。 (所以你不能在它们上面显示内容。)请注意,这是完全“官方”的——它只是与全屏窗口不同的方法。

    Steam 的工作原理是让 Steam 启动器将代码注入应用程序以显示状态弹出窗口。它不是一种可以——或者应该——在更一般的情况下使用的技术。

    【讨论】:

    • 有道理。是否有任何示例代码可以向我展示如何将此类代码注入应用程序?我需要使用 Carbon 吗?
    • mach_inject。但请注意,如果您自己没有启动受害者进程(如 Steam 那样),它需要用户授权,并且如果您不小心,则存在使受害者崩溃的重大风险。不要这样做。
    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多