Question

D'ACCORD.C'est un peu une application vaniteuse, mais j'ai eu une situation aujourd'hui au travail où j'étais dans un cours de formation et la machine était configurée pour se verrouiller toutes les 10 minutes.Eh bien, si les formateurs étaient enthousiastes à l’idée de parler – plutôt que de changer de diapositive – la machine se bloquerait.

J'aimerais écrire une petite application qui n'a rien d'autre qu'une icône dans la barre des tâches qui ne fait que déplacer la souris de 1 pixel toutes les 4 minutes.

Je peux le faire de 3 manières avec Delphi (mon langage fort) mais je passe au C# pour le travail et j'aimerais connaître le chemin de moindre résistance.

Était-ce utile?

La solution

pour C#3.5

sans icône de notification, vous devrez donc terminer manuellement cette application dans le gestionnaire de tâches

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

Autres conseils

La manière « correcte » de procéder consiste à répondre au message WM_SYSCOMMAND.En C#, cela ressemble à ceci :

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

Selon MSDN, si le mot de passe de l'économiseur d'écran est activé par la stratégie sur Vista ou version ultérieure, cela ne fonctionnera pas.Vraisemblablement, le déplacement de la souris par programme est également ignoré, bien que je n'aie pas testé cela.

Lorsque je travaille à domicile, je le fais en attachant le cordon de la souris à un ventilateur de bureau qui oscille de gauche à droite.Il maintient la souris en mouvement et empêche le poste de travail de se mettre en veille.

Quelque chose comme ça devrait fonctionner (même si vous volonté souhaitez modifier l'intervalle).

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top