【发布时间】:2014-12-11 00:56:00
【问题描述】:
我有一个 Delphi 应用程序,它在 MacOS 10.9.5 Yosemite 下的 PlayOnMac 中运行流畅。
它具有将应用程序最小化到 TrayBar 的功能。由于 Mac 没有 TrayBar 的概念,如果应用在 Mac 上运行,我想禁用此功能。
检查 Windows 版本不是一个选项,因为 PlayOnMac 通过模拟 Windows API 并报告操作系统是 Windows XP 确实很好地混淆了主机操作系统是 Mac 的事实。
如何检测到应用程序正在 PlayOnMac 中运行?
【问题讨论】:
-
如果您的应用尝试最小化到“托盘”会发生什么?它失败了吗?它只是隐藏而无法恢复吗?
-
您是否询问过 PlayOnMac 的创建者或查看过他们的文档?那么所有其他模拟器呢?你也想支持所有这些吗?
-
BTW Yosemite 是 OSX 10.10 而 OSX 10.9 是 Mavericks
-
如果 TrayBar 不受支持,我希望 API 调用的行为会略有不同。例如。
Shell_NotifyIcon可能总是返回 False。然后你只需要检查函数结果就知道你是否成功添加了一个托盘图标并可以隐藏你的表单。这有几个优点:不是根据环境全局禁用功能,而是根据功能是否受支持来这样做。因此,更高版本的 PlayOnMac 可能支持 TrayBar,您的应用程序将能够使用它们。或者,如果将 Windows 策略设置为禁用 TrayBar,您的应用也会相应地运行。 -
如果使用一些标准术语也会有所帮助。 Windows 没有托盘栏。你是说通知区吗?
标签: delphi wine delphi-xe7