Шевелить мышь

голоса
35

ОК. Это немного приложения тщеславия, но у меня была ситуация сегодня на работе, где я был в тренировочном классе, и машина была установлена ​​блокировка каждые 10 минут. Ну, если тренеры погорячился о разговоре - в отличие от смены слайдов - машина будет запирать.

Я хотел бы написать приложение, которое подросток не имеет ничего, кроме значка на панели задач, которая не делает ничего, кроме перемещения мыши на 1 пиксель каждые 4 минуты.

Я могу сделать это в 3 способами с Delphi (мой сильный язык), но я двигаюсь в C # для работы, и я хотел бы знать, по пути наименьшего сопротивления там.

Задан 05/08/2008 в 03:51
источник пользователем
На других языках...                            


4 ответов

голоса
23

для 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();
    }
}
Ответил 05/08/2008 в 04:00
источник пользователем

голоса
12

«Правильный» способ сделать это, чтобы ответить на сообщение 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 , или выше, это не будет работать. Предположительно программное перемещение мыши также игнорируются, хотя я не проверял это.

Ответил 17/08/2008 в 21:29
источник пользователем

голоса
9

Когда я работаю из дома, я делаю это, связывая шнур мыши на рабочем столе вентилятор, который качается слева направо. Он держит перемещение мыши и сохраняет рабочую станцию ​​с засыпанием.

Ответил 09/12/2011 в 21:29
источник пользователем

голоса
2

Нечто подобное должно работать (хотя, вы будете хотеть , чтобы изменить интервал).

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);
}
Ответил 05/08/2008 в 04:07
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more