Poruszając myszą

głosy
35

OK. To jest trochę aplikacji próżność, ale miałem sytuacji dzisiaj w pracy, gdzie jestem w klasie szkolenia, a urządzenie zostało ustawione w pozycji blokady co 10 minut. Dobrze, jeśli trenerzy dostaje podekscytowany rozmowy - w przeciwieństwie do zmiany slajdów - maszyna będzie zamknąć.

Chciałbym napisać malusieńki aplikację, która ma nic oprócz ikony na pasku zadań, że nie robi nic poza przesunąć mysz o 1 piksel co 4 minuty.

Można to zrobić na 3 sposoby z Delphi (moja silna językowej), ale ruszam do C # w pracy i chciałbym znać ścieżkę najmniejszego oporu tam.

Utwórz 05/08/2008 o 03:51
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
23

dla C # 3.5

bez notifyicon dlatego trzeba ręcznie zakończyć tę aplikację w Menedżerze zadań

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();
    }
}
Odpowiedział 05/08/2008 o 04:00
źródło użytkownik

głosy
12

„Poprawny” sposób to zrobić, aby odpowiedzieć na wiadomość WM_SYSCOMMAND. W języku C # to wygląda mniej więcej tak:

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

Zgodnie z MSDN , jeśli hasło wygaszacza ekranu jest aktywna polityka na Vista lub powyżej, to nie będzie działać. Przypuszczalnie programowo przesuwając mysz jest również ignorowane, choć nie testowałem tego.

Odpowiedział 17/08/2008 o 21:29
źródło użytkownik

głosy
9

Kiedy pracuję z domu, robię to poprzez wiązanie kabel myszy na pulpicie wentylatora oscylujący lewej do prawej. Utrzymuje przesuwanie myszy i utrzymuje roboczą przed pójściem spać.

Odpowiedział 09/12/2011 o 21:29
źródło użytkownik

głosy
2

Coś jak to powinno działać (choć, będzie chciał zmienić interwał).

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);
}
Odpowiedział 05/08/2008 o 04:07
źródło użytkownik

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