好的。这是一个虚荣的应用程序,但今天我在工作中遇到了一个情况,那就是我正在上一个培训班,并且机器每隔10分钟就会锁定一次。那么,如果培训师对谈话感到兴奋 - 而不是改变幻灯片 - 机器会锁定。摆动鼠标
我想写一个小工具,除了任务栏图标什么都不做,只是每4分钟将鼠标移动一个像素。
我可以用Delphi(我强大的语言)以3种方式做到这一点,但我正在转向C#工作,我想知道那里阻力最小的路径。
好的。这是一个虚荣的应用程序,但今天我在工作中遇到了一个情况,那就是我正在上一个培训班,并且机器每隔10分钟就会锁定一次。那么,如果培训师对谈话感到兴奋 - 而不是改变幻灯片 - 机器会锁定。摆动鼠标
我想写一个小工具,除了任务栏图标什么都不做,只是每4分钟将鼠标移动一个像素。
我可以用Delphi(我强大的语言)以3种方式做到这一点,但我正在转向C#工作,我想知道那里阻力最小的路径。
为C#3.5
没有NotifyIcon的,因此,你需要终止在任务管理器这个应用程序手动
using System;
using System.Drawing;
using System.Windows.Forms;
static class Program
{
static void Main()
{
Timer timer = new Timer();
// timer.Interval = 4 minutes
timer.Interval = (int)(TimeSpan.TicksPerMinute * 4/TimeSpan.TicksPerMillisecond);
timer.Tick += (sender, args) => { Cursor.Position = new Point(Cursor.Position.X + 1, Cursor.Position.Y + 1); };
timer.Start();
Application.Run();
}
}
像这样的东西应该工作(虽然,你将想改变间隔)。
public Form1()
{
InitializeComponent();
Timer Every4Minutes = new Timer();
Every4Minutes.Interval = 10;
Every4Minutes.Tick += new EventHandler(MoveNow);
Every4Minutes.Start();
}
void MoveNow(object sender, EventArgs e)
{
Cursor.Position = new Point(Cursor.Position.X - 1, Cursor.Position.Y - 1);
}
“正确”的方法是响应WM_SYSCOMMAND消息。在C#中,这看起来是这样的:
protected override void WndProc(ref Message m)
{
// Abort screensaver and monitor power-down
const int WM_SYSCOMMAND = 0x0112;
const int SC_MONITOR_POWER = 0xF170;
const int SC_SCREENSAVE = 0xF140;
int WParam = (m.WParam.ToInt32() & 0xFFF0);
if (m.Msg == WM_SYSCOMMAND &&
(WParam == SC_MONITOR_POWER || WParam == SC_SCREENSAVE)) return;
base.WndProc(ref m);
}
据MSDN,如果屏保密码是通过在Vista或以上策略启用,这是不行的。大概以编程方式移动鼠标也被忽略,尽管我没有测试过这个。
当我在家工作时,通过将鼠标线连接到从左至右摆动的桌面风扇来实现此目的。它保持鼠标移动并保持工作站不进入睡眠状态。
您是否尝试过Lubso的回答?虽然它会摆动鼠标,但我不确定它会阻止屏幕保护程序踢入! – 2008-09-20 17:54:18
这确实可以在Windows XP上使用密码保护的屏幕保护程序。 – 2009-07-08 22:09:16