2008-08-05 14 views
34

OK. Đây là một chút của một ứng dụng vanity, nhưng tôi đã có một tình huống ngày hôm nay tại nơi làm việc mà tôi đã ở trong một lớp đào tạo và máy đã được thiết lập để khóa mỗi 10 phút. Vâng, nếu các giảng viên phấn khích về việc nói chuyện - trái ngược với việc thay đổi các slide - máy sẽ khóa lại.Lấp lánh chuột

Tôi muốn viết một ứng dụng tuổi teen không có gì ngoài biểu tượng thanh tác vụ không làm gì ngoài việc di chuyển chuột lên 1 pixel mỗi 4 phút.

Tôi có thể làm điều đó theo 3 cách với Delphi (ngôn ngữ mạnh mẽ của tôi) nhưng tôi đang chuyển sang C# để làm việc và tôi muốn biết con đường ít kháng cự nhất ở đó.

+1

Bạn đã thử câu trả lời của Lubso chưa? Trong khi nó sẽ lung lay chuột, tôi không chắc chắn nó sẽ ngừng màn hình tiết kiệm từ đá trong! –

+0

Điều này đã làm việc trên Windows XP bằng cách sử dụng trình bảo vệ màn hình được bảo vệ bằng mật khẩu. –

+0

Chỉ cần thử trên XP trong môi trường bị khóa của công ty (mật khẩu được thực thi) và nó không có tác dụng. –

Trả lời

22

cho C# 3.5

mà không NotifyIcon do đó bạn sẽ cần phải chấm dứt ứng dụng này trong công việc quản lý bằng tay

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

Điều này thực sự có hiệu quả không? Từ bộ nhớ, "thời gian chờ" để khởi động trình bảo vệ màn hình được thực hiện ở đâu đó trong O/S để thực hiện với đầu vào. Di chuyển chuột-vị trí không có cùng một đường dẫn hợp lý, do đó, người dùng đã không thực sự đặt lại đếm ngược! –

+1

Tôi thử nghiệm nó trên Win7 của tôi và nó không hoạt động. – newman

+0

Lubos - Tôi thích nó! Tôi sẽ sửa đổi nó để thay đổi giữa các lần di chuyển để sau một ngày, con trỏ sẽ không được chôn ở góc màn hình, nhưng đó là cầu kỳ - có lẽ họ thậm chí sẽ thích nó theo cách đó. :) Cảm ơn rất nhiều vì câu trả lời nhanh, tuyệt vời! –

2

Something như thế này nên làm việc (mặc dù, bạn sẽ muốn thay đổi khoảng thời gian).

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

Cách "đúng" để thực hiện việc này là trả lời thư WM_SYSCOMMAND. Trong C# này trông giống như sau:

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

Theo MSDN, nếu mật khẩu bảo vệ màn hình được kích hoạt bởi chính sách trên Vista hoặc cao hơn, điều này sẽ không làm việc. Có lẽ là lập trình di chuyển chuột cũng bị bỏ qua, mặc dù tôi chưa thử nghiệm điều này.

9

Khi tôi làm việc ở nhà, tôi làm điều này bằng cách buộc dây chuột vào quạt máy tính để bàn dao động từ trái sang phải. Nó giữ cho chuột di chuyển và giữ cho máy trạm không đi ngủ.

Các vấn đề liên quan