Pregunta

DE ACUERDO.Esta es una aplicación un poco vanidosa, pero hoy tuve una situación en el trabajo en la que estaba en una clase de capacitación y la máquina estaba configurada para bloquearse cada 10 minutos.Bueno, si los entrenadores se entusiasmaran con hablar, en lugar de cambiar de diapositiva, la máquina se bloquearía.

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

Puedo hacerlo de tres maneras con Delphi (mi lenguaje fuerte), pero me estoy mudando a C# para trabajar y me gustaría saber cuál es el camino de menor resistencia allí.

¿Fue útil?

Solución

para C# 3.5

sin icono de notificación, 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();
    }
}

Otros consejos

La forma "correcta" de hacerlo es responder al mensaje WM_SYSCOMMAND.En C# esto se parece a esto:

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 a MSDN, si la contraseña del protector de pantalla está habilitada por la política en Vista o superior, esto no funcionará.Es de suponer que también se ignora el movimiento del mouse mediante programación, aunque no lo he probado.

Cuando trabajo desde casa, lo hago atando el cable del mouse a un ventilador de escritorio que oscila de izquierda a derecha.Mantiene el mouse en movimiento y evita que la estación de trabajo entre en modo de suspensión.

Algo como esto debería funcionar (aunque, voluntad desea 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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top