创建一个位于Windows任务栏中的程序,并在激活时阻止屏幕保护程序启动

时间:2009-05-21 21:50:26

标签: windows winapi input taskbar screensaver

我真的不知道从哪里开始。让我们从愚蠢的问题开始:

我应该用什么语言?什么适合手头的任务?

接下来,真正的:

有没有办法阻止屏幕保护程序启动,没有更改光标位置?如果没有,更改光标位置是否有效?

4 个答案:

答案 0 :(得分:7)

如果您传递了ES_CONTINUOUS和ES_DISPLAY_REQUIRED标记,

SetThreadExecutionState将阻止屏幕保护程序进入或机器自动进入休眠状态。

答案 1 :(得分:2)

我前一段时间写了一个应用程序,它完全符合您的要求。它在系统托盘中作为图标运行,而不是任务栏,并使用全局消息挂钩禁用WM_SYSCOMMAND/SC_SCREENSAVE通知到达任何应用程序。如果该通知未到达DefWindowProc()函数,则屏幕保护程序将永远不会运行。

答案 2 :(得分:1)

  1. 您的程序根本不需要在任务栏中显示。
  2. 如果您可以在注册表中禁用屏幕保护程序,则根本不需要程序。
  3. 您想要做的事情可以通过向桌面窗口发送MOUSE_MOVE事件来实现 。如果你想使用C#(我现在使用的唯一语言),你可以查看this article,但使用WinAPI的简单C程序可能更适合这项任务。

答案 3 :(得分:0)

.NET将允许您将应用程序放入系统托盘(检查System.Windows.Forms.Controls中的NotifyIcon对象)。

我相信您可以使用SetCursorPos(http://msdn.microsoft.com/en-us/library/ms648394(VS.85).aspx)API调用来阻止屏幕保护程序,只需确保将它们设置为当前位置,这样就不会实际移动鼠标。