【问题标题】:How to detect a non Java program running in fullscreen mode?如何检测以全屏模式运行的非 Java 程序?
【发布时间】:2011-06-20 14:03:40
【问题描述】:

我目前正在开发一个在后台运行的 Java 跨平台(windows 和 mac os x)应用程序,并在某些用户或系统事件(如“复制和粘贴”或程序启动)上显示一个弹出窗口。

不过,我想先检测一下,是否有其他程序(不一定是用 Java 开发的)以全屏模式运行。在那种情况下,我不会显示我的窗口。 例如,当用户全屏观看电影(媒体播放器...)时,PowerPoint 演示文稿...

所以这是我的问题: 1、有没有办法用Java语言做这样的事情? 2. 如果不可能,我会用另一种语言执行“全屏模式检测器”,但它必须能够与我的 Java 应用程序通信以通知全屏窗口的存在。 3. 如果不可能(1):你知道最好的语言吗?我在 C# 或 C++ MFC(How to check if an other program is running in fullscreen mode, eg. a media player) 中找到了其他解决方案。

任何想法都会非常有用。 非常感谢。

塞巴斯蒂安

【问题讨论】:

标签: java cross-platform fullscreen detect


【解决方案1】:

最终我为每个操作系统做了一个外部程序,它检查活动窗口是否处于全屏模式,并将结果写入标准输出。我的 Java 应用程序根据操作系统调用好程序并读取结果。

我用过:

  • 适用于 Windows 的 C#
  • 适用于 Mac OS X 的碳

最难的部分是 Mac OS X 版本。

如果您对这些程序感兴趣,请随时问我。

再次感谢您的帮助!

【讨论】:

    【解决方案2】:

    你可以用java.awt.Robot截屏,你能实现基于截屏的算法吗?

    【讨论】:

    • 有趣的答案,谢谢。实际上,我的应用程序在显示窗口之前已经捕获了屏幕截图。所以你认为算法可以分析屏幕截图并确定窗口是否处于全屏模式?我有点怀疑,因为有时很难说您是否处于全屏模式,例如看电影。
    • 准确率超过 95% 是可能的。看电影意味着您可能在顶部和底部有黑色矩形,并且没有苹果/windows 标志,框架窗口。是的,实现起来并不容易。
    • 唯一的选择是 JNI,每个平台都实现了功能 - Windows API、Objective C、X11 等。
    • 再次感谢。我想我现在会学习 JNI 并为每个操作系统开发一个功能。
    【解决方案3】:

    最简单的解决方案是为用户提供启用/禁用弹出窗口的选项。这样他们就可以选择何时接收弹出窗口。

    【讨论】:

    • 感谢您的建议。用户已经可以在我的程序中执行此操作。但我还需要检测正在运行的全屏程序,因为将来我可能需要在此事件上显示一个特定的弹出窗口。我之前没有说过,但我的应用程序的目标是询问用户关于他在系统上的活动的问题(描述性体验抽样方法)。
    猜你喜欢
    • 2012-06-13
    • 2012-09-22
    • 2012-01-03
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2015-11-21
    • 2013-09-30
    相关资源
    最近更新 更多