3

在 Windows XP 中,当程序需要用户注意时,它的任务栏按钮会闪烁橙色。任何拥有 IM 程序的人都可能熟悉这种行为。但是当我玩全屏模式游戏时,我看不到这一点,并且消息没有得到回复。

现在我正在编写自己的游戏引擎,我想善待我的用户。是否有任何 Windows API 调用我可以编写一个挂钩,只要任何其他程序将其任务栏按钮设置为“橙色闪烁模式”,它就会通知我的程序?这样,我可以在它发生时通知用户。

如果这不可用,我会感到惊讶。早在 90 年代中期,我就看到了一个 Mac OS Classic 屏幕保护程序,它能够做到这一点。我就是从那里得到这个想法的。

编辑:这被标记为how-can-i-programmatically-determine-if-an-application-is-flash-in-the-taskb 的副本,但我重新打开它是因为这个答案更好,并鼓励更多人讨论可能的解决方案,如果有的话。

4

5 回答 5

3

我不认为有这样的事情。您也许可以通过API hooking来实现它,尽管我不确定 Vista 是否允许您这样做。虽然适用于 XP。

然而,在这个方向上还有一些其他想法可能是“下一个最好的事情”:

  • 不要独占声音设备,以免听到其他程序的声音。我不确定这是怎么做到的,但有些游戏会阻止其他声音,有些则不会;
  • 允许用户使用 ALT-TAB 和其他组合键离开您的游戏;
  • 如果另一个窗口试图激活,允许它并优雅地最小化;

其他一般提示包括:

  • 尽量减少最小化/恢复时间。我对游戏编程一无所知,但对于某些游戏来说,这需要很长时间。
  • 最小化/恢复时正确恢复图片。有些游戏有这个问题。
  • 最小化时自动暂停。如果这是一个网络游戏并且无法暂停,也许可以向其他玩家发送消息,让他们知道。
  • 有点不相关,但我喜欢游戏在某处显示时钟(真正的时钟,而不是一些游戏时间)。通过这种方式,我可以很容易地判断我是否应该在不最小化程序的情况下已经上床睡觉。:)
于 2008-12-16T00:34:39.883 回答
0

看起来这个问题之前已经在 SO 上问过:如何以编程方式确定应用程序是否在任务栏中闪烁

简短的回答:似乎不可能。

于 2008-12-16T00:30:04.510 回答
0

当然有可能。它甚至是 Win32 常见问题解答(多年来......)请参阅 Adv。api ng新闻://comp.os.ms-windows.programmer.win32

于 2008-12-17T17:24:07.083 回答
0

这里有几个链接可以帮助您开始使用 Api hooking

www.internals.com/articles/apispy/apispy.htm www.wheaty.net/

Vista 通常对 API 挂钩没有任何问题,只是它不允许您挂钩受保护的进程。

于 2009-05-19T23:18:44.553 回答
-2

完全可以做到。我在 Windows 7 上做,所以我很确定在 Vista 上也可以做。

于 2009-10-01T05:47:34.150 回答