Frage

OK.Dies ist ein bisschen eine Vanity-App, aber ich hatte heute bei der Arbeit eine Situation, in der ich in einem Schulungskurs war und das Gerät so eingestellt war, dass es alle 10 Minuten sperrt.Nun, wenn die Trainer Lust aufs Reden hätten – statt auf das Wechseln der Folien – würde die Maschine blockieren.

Ich möchte eine kleine App schreiben, die nichts anderes als ein Taskleistensymbol hat, das nichts weiter tut, als die Maus alle 4 Minuten um 1 Pixel zu bewegen.

Mit Delphi (meiner starken Sprache) kann ich das auf drei Arten tun, aber ich wechsle beruflich zu C# und würde dort gerne den Weg des geringsten Widerstands kennen.

War es hilfreich?

Lösung

für C# 3.5

Ohne notifyicon müssen Sie diese Anwendung daher manuell im Task-Manager beenden

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

Andere Tipps

Der „richtige“ Weg, dies zu tun, besteht darin, auf die WM_SYSCOMMAND-Nachricht zu antworten.In C# sieht das etwa so aus:

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

Entsprechend MSDN, Wenn das Bildschirmschonerkennwort unter Vista oder höher per Richtlinie aktiviert ist, funktioniert dies nicht.Vermutlich wird auch das programmgesteuerte Bewegen der Maus ignoriert, obwohl ich dies nicht getestet habe.

Wenn ich von zu Hause aus arbeite, befestige ich dazu das Mauskabel an einem Tischventilator, der von links nach rechts schwingt.Es hält die Maus in Bewegung und verhindert, dass die Workstation in den Ruhezustand wechselt.

So etwas sollte funktionieren (obwohl Sie Wille Sie möchten das Intervall ändern).

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top