【问题标题】:Creating a HUD on top of another application with Cocoa使用 Cocoa 在另一个应用程序之上创建 HUD
【发布时间】:2015-08-12 22:13:03
【问题描述】:

是否可以在另一个应用程序的窗口顶部使用 Cocoa 创建 HUD?例如,如果我要创建一个扑克 HUD,它将在扑克客户端窗口顶部显示有关对手的信息,我将如何在 OS X 中实现它(使用 Cocoa?)。

例如,我将如何重新创建以下 Windows 程序(PokerTracker HUD:在 PokerStars 顶部显示 HUD)?

【问题讨论】:

  • 我不确定你在问什么,部分原因是你使用的 Windows 术语(非所有)对 Mac 程序员来说毫无意义。另外,Poker Client 是您拥有源代码的程序吗?
  • 我把这个问题看了两遍。我也不确定“不拥有”是什么意思。不过,直到两年半前,我才开发 Windows 应用程序。
  • @JWWalker 我更新了这个问题。非所有我的意思是我根本不拥有该应用程序/进程/窗口的源代码。感谢您的反馈。
  • “PokerTracker”有一个 Mac 版本,所以我猜答案是“是的,它是可能的”。至于如何做到这一点,这很有趣,但对于 SO 来说太宽泛了。
  • @EricD。我认为这个问题很模糊,但不是太宽泛。 HUD 小部件不是NSWindow 元素,但它们是什么? HUD 的放置通常是通过屏幕截图结合 OCR 完成的,并且是基于矢量的,因此会响应调整扑克客户端窗口的大小。但是我对这些都不感兴趣,我只想知道如何绘制这些元素(例如使用了哪个 Cocoa 类)。

标签: objective-c macos swift cocoa hud


【解决方案1】:

我不确定这是否是您要问的,但我认为 HUD 元素将是设置为覆盖的 NSWindow 中的控件或视图。以下是配置它的一些关键步骤:

[myWindow setOpaque: NO];
[myWindow setBackgroundColor: [NSColor clearColor]];
[myWindow setLevel: NSStatusWindowLevel];

然后您需要跟踪哪个应用程序位于最前面,以便您的叠加层仅在目标应用程序位于前面时可见。我认为您可以通过为目标应用找到NSRunningApplication,然后通过键值观察其active 属性来做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2014-08-26
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多