c# - Agiter la souris

Translate

D'ACCORD. C'est un peu une application de vanité, mais j'ai eu une situation aujourd'hui au travail où j'étais dans un cours de formation et la machine était réglé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 diapositives - la machine se bloquait.

J'aimerais écrire une application minuscule qui n'a rien d'autre qu'une icône de 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 façons avec Delphi (mon langage fort) mais je passe en C # pour travailler et j'aimerais connaître le chemin de moindre résistance là-bas.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

pour C # 3.5

sans notification, vous devrez donc mettre fin à cette application dans le gestionnaire de tâches manuellement

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

La manière «correcte» de faire cela 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);
}

SelonMSDN, si le mot de passe de l'économiseur d'écran est activé par la politique sur Vista ou supérieur, cela ne fonctionnera pas. On peut supposer que le déplacement de la souris par programme est également ignoré, bien que je ne l'ai pas testé.

La source
Translate

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 s'endormir.

La source
Translate

Quelque chose comme ça devrait fonctionner (cependant, vousvolontévoulez changer 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);
}
La source