2008-08-05 25 views
34

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

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

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

+1

क्या आपने लुब्सो के उत्तर की कोशिश की है? जबकि यह माउस को घुमाएगा, मुझे यकीन नहीं है कि यह स्क्रीन सेवर को लात मारने से रोक देगा! –

+0

यह पासवर्ड सुरक्षित स्क्रीन सेवर का उपयोग कर विंडोज एक्सपी पर काम करता था। –

+0

बस इसे कॉर्पोरेट लॉक डाउन पर्यावरण (लागू पासवर्ड) में एक्सपी पर आज़माएं और इससे मदद नहीं मिलती है। –

उत्तर

22

के लिए सी # 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(); 
    } 
} 
+0

क्या यह वास्तव में काम करेगा? स्मृति से, स्क्रीन सेवर में लात मारने के लिए "टाइमआउट" इनपुट के साथ ओ/एस में कहीं भी किया जाता है। माउस-स्थिति को स्थानांतरित करना एक ही तार्किक पथ नहीं लेता है, इसलिए उपयोगकर्ता ने वास्तव में उलटी गिनती को रीसेट नहीं किया है! –

+1

मैं इसे अपने विन 7 पर परीक्षण करता हूं और यह काम नहीं करता है। – newman

+0

लुबोस - मुझे यह पसंद है! मैं इसे चाल के बीच वैकल्पिक रूप से संशोधित करने जा रहा हूं ताकि एक दिन के बाद, कर्सर को स्क्रीन के कोने पर दफन नहीं किया जाएगा, लेकिन यह picky हो रहा है - शायद वे इसे भी पसंद करेंगे। :) तेजी से, महान जवाब के लिए बहुत बहुत धन्यवाद! –

2

कुछ इस तरह काम करना चाहिए (हालांकि, आप बदलना चाहते हैं जाएगा कार्य प्रबंधक में इस आवेदन को समाप्त करने की आवश्यकता होगी मध्यान्तर)।

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

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

9

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

संबंधित मुद्दे