माउस wiggling

ठीक। यह एक वैनिटी ऐप का थोड़ा सा है, लेकिन आज मेरे पास एक परिस्थिति थी जहां मैं एक प्रशिक्षण कक्षा में था और मशीन हर 10 मिनट में लॉक करने के लिए सेट की गई थी। खैर, अगर ट्रेनर्स बात करने के बारे में उत्साहित हो गए - स्लाइड बदलने के विपरीत - मशीन लॉक हो जाएगी।

मैं एक किशोर ऐप लिखना चाहता हूं जिसमें टास्कबार आइकन के अलावा कुछ भी नहीं है जो कुछ भी नहीं करता है लेकिन हर 4 मिनट में माउस को 1 पिक्सेल से ले जाता है।

मैं इसे डेल्फी (मेरी मजबूत भाषा) के साथ 3 तरीकों से कर सकता हूं लेकिन मैं काम के लिए सी # पर जा रहा हूं और मैं वहां कम से कम प्रतिरोध का मार्ग जानना चाहता हूं।

0
जोड़ा संपादित
विचारों: 1
यह पासवर्ड सुरक्षित स्क्रीन सेवर का उपयोग कर विंडोज एक्सपी पर काम करता था।
जोड़ा लेखक Bruce the Hoon, स्रोत
स्क्रीनसेवर को सक्षम और अक्षम करने के लिए शॉर्टकट लिखना बेहतर नहीं होगा?
जोड़ा लेखक metao, स्रोत
क्या आपने लुब्सो के जवाब की कोशिश की है? जबकि यह माउस को घुमाएगा, मुझे यकीन नहीं है कि यह स्क्रीन सेवर को लात मारने से रोक देगा!
जोड़ा लेखक Ray Hayes, स्रोत
कॉरपोरेट लॉक डाउन एनवायरनमेंट (लागू पासवर्ड) में एक्सपी पर बस कोशिश की और इससे मदद नहीं मिलती है।
जोड़ा लेखक Ray Hayes, स्रोत

4 उत्तर

इस तरह कुछ काम करना चाहिए (हालांकि, आप करेंगे अंतराल को बदलना चाहते हैं)।

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);
}
0
जोड़ा

ऐसा करने का "सही" तरीका WM_SYSCOMMAND संदेश का जवाब देना है। सी # में ऐसा कुछ दिखता है:

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 के अनुसार Vista या ऊपर की नीति द्वारा, यह काम नहीं करेगा। संभावित रूप से माउस को प्रोग्रामेटिक रूप से ले जाना भी अनदेखा किया जाता है, हालांकि मैंने इसका परीक्षण नहीं किया है।

0
जोड़ा

सी # 3.5 के लिए

अधिसूचना के बिना आपको इस एप्लिकेशन को मैन्युअल रूप से कार्य प्रबंधक में समाप्त करने की आवश्यकता होगी

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();
    }
}
0
जोड़ा
लुबोस - मुझे यह पसंद है! मैं इसे चाल के बीच वैकल्पिक रूप से संशोधित करने जा रहा हूं ताकि एक दिन के बाद, कर्सर को स्क्रीन के कोने पर दफन नहीं किया जाएगा, लेकिन यह picky हो रहा है - शायद वे इसे भी पसंद करेंगे। :) तेजी से, महान जवाब के लिए बहुत बहुत धन्यवाद!
जोड़ा लेखक Bruce the Hoon, स्रोत
मैं इसे अपने विन 7 पर परीक्षण करता हूं और यह काम नहीं करता है।
जोड़ा लेखक newman, स्रोत
क्या यह वास्तव में काम करेगा? स्मृति से, स्क्रीन सेवर में लात मारने के लिए "टाइमआउट" इनपुट के साथ ओ / एस में कहीं भी किया जाता है। माउस-स्थिति को स्थानांतरित करना एक ही तार्किक पथ नहीं लेता है, इसलिए उपयोगकर्ता ने वास्तव में उलटी गिनती को रीसेट नहीं किया है!
जोड़ा लेखक Ray Hayes, स्रोत

जब मैं घर से काम करता हूं, तो मैं माउस कॉर्ड को एक डेस्कटॉप प्रशंसक को बांधकर ऐसा करता हूं जो बाएं से दाएं ओर जाता है। यह माउस को आगे बढ़ता रहता है और वर्कस्टेशन को सोने से रोकता रहता है।

0
जोड़ा