Mexendo o mouse

votos
35

ESTÁ BEM. Este é um pouco de um aplicativo de vaidade, mas eu tinha uma situação hoje no trabalho, onde eu estava em uma aula de treinamento e a máquina foi travada a cada 10 minutos. Bem, se os formadores ficou animado sobre falar - em oposição a troca de slides - a máquina iria travar.

Eu gostaria de escrever um aplicativo pequenino que não tem nada, mas um ícone da barra de tarefas que não faz nada, mas mover o mouse por 1 pixel a cada 4 minutos.

Eu posso fazer isso de 3 maneiras com Delphi (minha linguagem forte), mas eu estou indo para C # para o trabalho e eu gostaria de saber o caminho de menor resistência lá.

Publicado 05/08/2008 em 03:51
fonte usuário
Em outras línguas...                            


4 respostas

votos
23

para C # 3.5

sem NotifyIcon, portanto, você terá de pôr termo à aplicação 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();
    }
}
Respondeu 05/08/2008 em 04:00
fonte usuário

votos
12

A maneira "correta" de fazer isso é para responder à mensagem WM_SYSCOMMAND. Em C # isto é algo como 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 screensaver é ativado por política no Vista ou acima, isso não vai funcionar. Presumivelmente mover programaticamente o mouse também é ignorado, embora eu não testei isso.

Respondeu 17/08/2008 em 21:29
fonte usuário

votos
9

Quando eu trabalhar em casa, eu faço isso por amarrar o cabo do mouse para um ventilador de mesa que oscila esquerda para a direita. Ele mantém o movimento do mouse e mantém a estação de trabalho de ir dormir.

Respondeu 09/12/2011 em 21:29
fonte usuário

votos
2

Algo como isso deve funcionar (embora, você vai querer mudar 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);
}
Respondeu 05/08/2008 em 04:07
fonte usuário

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