如何巧妙地通知用户他的输入已收到

时间:2009-01-20 21:27:59

标签: winapi notifications

我正在编写一个在特定应用程序中自动注入的DLL。因为我想在处理程序时运行该程序,并且我的用户可能想要在没有特定情况下加载程序(例如寻找错误),我有时想要阻止加载DLL。 目前我通过在加载时检查VK_LCONTROL,VK_LSHIFT和VK_LMENU的GetKeyState来做到这一点,如果所有都关闭,我会默默地卸载自己。 但是,程序加载和查看DLL是否加载可能需要几秒钟,因此我想在卸载时通知用户。我考虑过MessageBox,但这太具破坏性了。我尝试过MessageBeep,但在我的设置上似乎没有做任何事情。目前我正在使用一个简单的双哔(Beep,Sleep,Beep)来表示卸载,但这可能会让我的同事变得相当讨厌。我还考虑过系统托盘图标,但这会引入大量代码和bug潜力,而我的目标是尽可能少地通知不会引入任何微妙的错误。

是否有其他人知道一种微妙的方式(最好是视觉方式)通知用户他们的输入已成功收到?

7 个答案:

答案 0 :(得分:4)

鉴于您的目标范围有限,实际上这可能恰恰适用于taskbar notification balloon tip

编辑:添加了乔在他的同意答案中发布的链接。谢谢,乔! :)

答案 1 :(得分:2)

如果您的应用在底部有状态栏,则可以在其中放置一些消息文本...

答案 2 :(得分:1)

您是否考虑过自行关闭的定时消息框?

http://www.codeguru.com/cpp/misc/misc/messageboxhandling/article.php/c203

答案 3 :(得分:0)

您可以打开一个带有短消息的窗口,并在0.5秒左右后再次自动关闭它。它不需要用户交互,因此我认为它不具有破坏性。

答案 4 :(得分:0)

更改窗口标题,然后再将其更改回来。然后,即使用户同时将Alt-Tabbed覆盖到某个其他程序,也可以看到更改,而不会从用户那里窃取焦点。

答案 5 :(得分:0)

答案 6 :(得分:0)

两个想法:

  1. 转过来。 DLL 加载时有一个可视指示,如果没有指示符,则告知您已卸载DLL。也许是标题栏中的后缀。这样,您可以随时告知,而不仅仅是在启动期间。

  2. FlashWindowEx