2

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

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

接下来是真人:

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

4

4 回答 4

7

如果您传递 ES_CONTINUOUS 和 ES_DISPLAY_REQUIRED 标志, SetThreadExecutionState将阻止屏幕保护程序开启或机器自动进入睡眠状态。

于 2009-05-21T22:07:06.310 回答
2

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

于 2009-06-17T00:43:12.443 回答
1
  1. 您的程序根本不需要在任务栏中可见。
  2. 如果您可以在注册表中禁用屏幕保护程序,您甚至根本不需要程序。
  3. 您想要做的也许可以通过向桌面窗口发送 MOUSE_MOVE 事件来实现。如果您想使用 C#(我目前唯一使用的语言),您可以查看这篇文章,但使用 WinAPI 的简单 C 程序可能更适合此任务。
于 2009-05-21T22:01:19.333 回答
0

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

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

于 2009-05-21T22:01:21.877 回答