Tortillant la souris

voix
35

D'ACCORD. Ceci est un peu d'une application de la vanité, mais j'avais une situation aujourd'hui au travail où je me trouvais dans une classe de formation et la machine a été mis à verrouiller toutes les 10 minutes. Eh bien, si les formateurs se sont enthousiasmés par parler - par opposition aux diapositives changer - la machine bloquerait.

Je voudrais écrire une application Teeny qui n'a rien, mais une icône de la barre des tâches qui ne fait que déplacer la souris par 1 pixel toutes les 4 minutes.

Je peux le faire de 3 façons avec Delphi (ma langue forte) mais je me déplace à C # pour le travail et je voudrais connaître le chemin de moindre résistance là.

Créé 05/08/2008 à 03:51
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
23

C # 3.5

sans NotifyIcon donc vous aurez besoin de 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();
    }
}
Créé 05/08/2008 à 04:00
source utilisateur

voix
12

La « bonne » façon de faire est de répondre au message WM_SYSCOMMAND. En C # cela ressemble quelque chose comme 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 économiseur d'écran est activé par la politique sur Vista ou au- dessus, cela ne fonctionnera pas. On peut supposer que le déplacement de la souris programme est également ignoré, bien que je ne l' ai pas testé.

Créé 17/08/2008 à 21:29
source utilisateur

voix
9

Quand je travaille à la maison, je le fais en attachant le cordon de la souris à un ventilateur de bureau qui oscille de gauche à droite. Il maintient le déplacement de la souris et maintient le poste de travail d'aller dormir.

Créé 09/12/2011 à 21:29
source utilisateur

voix
2

Quelque chose comme cela devrait fonctionner (si, vous allez vouloir 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);
}
Créé 05/08/2008 à 04:07
source utilisateur

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