Mover el mouse

votos
35

DE ACUERDO. Es una especie de aplicación de tocador, pero hoy tuve una situación en el trabajo en la que estaba en una clase de entrenamiento y la máquina se bloqueó cada 10 minutos. Bueno, si los entrenadores se emocionaban por hablar, en lugar de cambiar diapositivas, la máquina se bloqueaba.

Me gustaría escribir una pequeña aplicación que no tenga más que un icono de barra de tareas que no hace más que mover el mouse en 1 píxel cada 4 minutos.

Puedo hacer eso de 3 maneras con Delphi (mi lenguaje fuerte) pero me estoy moviendo a C # para el trabajo y me gustaría saber el camino de menor resistencia allí.

Publicado el 05/08/2008 a las 03:51
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
23

para C # 3.5

sin notifyicon, por lo tanto, deberá finalizar esta aplicación en el administrador de tareas 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();
    }
}
Respondida el 05/08/2008 a las 04:00
fuente por usuario

votos
12

La forma "correcta" de hacerlo es responder al mensaje WM_SYSCOMMAND. En C #, esto se ve así:

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 acuerdo con MSDN , si la contraseña del protector de pantalla está habilitada por la política en Vista o más arriba, esto no funcionará. Es de suponer que mover el mouse de forma programática también se ignora, aunque no lo he probado.

Respondida el 17/08/2008 a las 21:29
fuente por usuario

votos
9

Cuando trabajo desde casa, hago esto por atar el cable de ratón para un ventilador de escritorio que oscila izquierda a derecha. Se mantiene el movimiento del ratón y mantiene la estación de trabajo de ir a dormir.

Respondida el 09/12/2011 a las 21:29
fuente por usuario

votos
2

Algo como esto debería funcionar (sin embargo, usted va a querer cambiar el 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);
}
Respondida el 05/08/2008 a las 04:07
fuente por usuario

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