Pergunta

OK.Este é um aplicativo meio vaidoso, mas hoje tive uma situação no trabalho em que estava em uma aula de treinamento e a máquina estava configurada para travar a cada 10 minutos.Bem, se os treinadores ficassem entusiasmados com a conversa - em vez de mudar os slides - a máquina travaria.

Eu gostaria de escrever um aplicativo minúsculo que não tivesse nada além de um ícone na barra de tarefas que não fizesse nada além de mover o mouse 1 pixel a cada 4 minutos.

Posso fazer isso de três maneiras com Delphi (minha linguagem forte), mas estou mudando para C# para trabalhar e gostaria de saber o caminho de menor resistência.

Foi útil?

Solução

para C#3.5

sem notifyicon, portanto, você precisará encerrar este aplicativo no gerenciador de tarefas manualmente

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();
    }
}

Outras dicas

A maneira "correta" de fazer isso é responder à mensagem WM_SYSCOMMAND.Em C#, isso se parece com isto:

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);
}

De acordo com MSDN, se a senha do protetor de tela estiver habilitada pela política no Vista ou superior, isso não funcionará.Presumivelmente, mover o mouse programaticamente também é ignorado, embora eu não tenha testado isso.

Quando trabalho em casa, faço isso amarrando o cabo do mouse a um ventilador de mesa que oscila da esquerda para a direita.Ele mantém o mouse em movimento e evita que a estação de trabalho entre no modo de suspensão.

Algo assim deve funcionar (embora você vai deseja alterar o intervalo).

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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top