سؤال

موافق.هذا هو قليلا من الغرور التطبيق ، ولكن كان الوضع اليوم في العمل حيث كنت في دورة تدريبية و الجهاز تم تعيين قفل كل 10 دقائق.حسنا, إذا المدربين تحمست الحديث بدلا من تغيير الشرائح - الجهاز قد حبس.

أود أن أكتب صغير التطبيق يحتوي سوى رمز شريط المهام الذي لا شيء سوى تحريك الماوس عن طريق 1 بكسل في كل 4 دقائق.

أستطيع أن أفعل ذلك في 3 طرق مع دلفي (ألفاظي) ولكن أنا الانتقال إلى C# من أجل العمل و أود أن أعرف الطريق الأقل مقاومة هناك.

هل كانت مفيدة؟

المحلول

C# 3.5

دون notifyicon لذلك سوف تحتاج إلى إنهاء هذا التطبيق في إدارة المهام يدويا

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

نصائح أخرى

"الصحيح" طريقة للقيام بذلك هو أن تستجيب WM_SYSCOMMAND الرسالة.في C# هذا يبدو شيئا من هذا القبيل:

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

وفقا MSDN, إذا شاشة كلمة السر هي تمكين السياسة على ويندوز فيستا أو أعلى ، هذا لن يعمل.ويفترض برمجيا تحريك الماوس أيضا تجاهلها ، على الرغم من أنني لم تختبر هذا.

عندما كنت تعمل من المنزل ، أنا أفعل هذا من خلال ربط الماوس الحبل على سطح المكتب مروحة التي تتأرجح اليسار إلى اليمين.فإنه يحتفظ الماوس يتحرك ويحافظ على محطة العمل من الذهاب إلى النوم.

شيئا من هذا القبيل يجب العمل (على الرغم من ، سوف ترغب في تغيير الفاصل الزمني).

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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top