Domanda

OK.Questa è un'app un po' vanitosa, ma oggi al lavoro ho avuto una situazione in cui ero in un corso di formazione e la macchina era impostata per bloccarsi ogni 10 minuti.Ebbene, se gli istruttori si entusiasmassero nel parlare, invece che nel cambiare le diapositive, la macchina si bloccherebbe.

Mi piacerebbe scrivere una piccolissima app che non abbia altro che un'icona sulla barra delle applicazioni che non fa altro che spostare il mouse di 1 pixel ogni 4 minuti.

Posso farlo in 3 modi con Delphi (il mio linguaggio forte) ma mi sto spostando in C# per lavoro e mi piacerebbe conoscere il percorso di minor resistenza lì.

È stato utile?

Soluzione

per C#3.5

senza l'icona di notifica, pertanto sarà necessario terminare manualmente l'applicazione nel Task Manager

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

Altri suggerimenti

Il modo "corretto" per farlo è rispondere al messaggio WM_SYSCOMMAND.In C# assomiglia a questo:

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

Secondo MSDN, se la password del salvaschermo è abilitata dai criteri su Vista o versioni successive, non funzionerà.Presumibilmente anche lo spostamento programmatico del mouse viene ignorato, sebbene non l'abbia testato.

Quando lavoro da casa, lo faccio legando il cavo del mouse a una ventola del desktop che oscilla da sinistra a destra.Mantiene il mouse in movimento e impedisce alla workstation di andare in stop.

Qualcosa del genere dovrebbe funzionare (anche se tu Volere si desidera modificare l'intervallo).

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top