摆动鼠标

好。这是一个虚荣的应用程序,但今天我在工作中遇到了一个情况,那就是我正在上一个培训班,并且机器每隔10分钟就会锁定一次。那么,如果培训师对谈话感到兴奋 - 而不是改变幻灯片 - 机器会锁定。

我想写一个小应用程序,它除了任务栏图标之外什么也不做,只是每4分钟将鼠标移动1个像素。

我可以用Delphi(我强大的语言)以3种方式做到这一点,但我正在转向C#工作,我想知道那里阻力最小的路径。

0
额外 编辑
意见: 2
这确实可以在Windows XP上使用密码保护的屏幕保护程序。
额外 作者 Bruce the Hoon,
写一个启用和禁用屏幕保护程序的快捷方式不是更好吗?
额外 作者 metao,
你有没有尝试Lubso的答案?虽然它会摆动鼠标,但我不确定它会阻止屏幕保护程序踢入!
额外 作者 Ray Hayes,
只是在企业锁定的环境(强制密码)上对XP进行了尝试,并没有帮助。
额外 作者 Ray Hayes,

4 答案

像这样的东西应该可以工作(不过,您想要更改间隔)。

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);
}
0
额外

执行此操作的“正确”方法是响应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或以上的政策,这是行不通的。大概以编程方式移动鼠标也被忽略,尽管我没有测试过这个。

0
额外

适用于C#3.5

没有通知图标,因此您需要手动在任务管理器中终止此应用程序

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();
    }
}
0
额外
Lubos - 我喜欢它!我将修改它以在两次移动之间切换,以便在一天之后,光标不会被掩埋在屏幕的角落,但这很挑剔 - 或许他们甚至会喜欢这种方式。 :)非常感谢您的快速答案!
额外 作者 Bruce the Hoon,
我在我的Win7上测试它,它不起作用。
额外 作者 newman,
这实际上会起作用吗?从内存中,用于屏幕保护程序的“超时”在O / S的某个位置与输入有关。移动鼠标位置不会采用相同的逻辑路径,所以用户并没有真正重置倒计时!
额外 作者 Ray Hayes,

当我在家工作时,通过将鼠标线连接到从左至右摆动的台式风扇来实现此目的。它保持鼠标移动并保持工作站不进入睡眠状态。

0
额外