好的。這是一個虛榮的應用程序,但今天我在工作中遇到了一個情況,那就是我正在上一個培訓班,並且機器每隔10分鐘就會鎖定一次。那麼,如果培訓師對談話感到興奮 - 而不是改變幻燈片 - 機器會鎖定。擺動鼠標
我想寫一個小工具,除了任務欄圖標什麼都不做,只是每4分鐘將鼠標移動一個像素。
我可以用Delphi(我強大的語言)以3種方式做到這一點,但我正在轉向C#工作,我想知道那裏阻力最小的路徑。
好的。這是一個虛榮的應用程序,但今天我在工作中遇到了一個情況,那就是我正在上一個培訓班,並且機器每隔10分鐘就會鎖定一次。那麼,如果培訓師對談話感到興奮 - 而不是改變幻燈片 - 機器會鎖定。擺動鼠標
我想寫一個小工具,除了任務欄圖標什麼都不做,只是每4分鐘將鼠標移動一個像素。
我可以用Delphi(我強大的語言)以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();
}
}
像這樣的東西應該工作(雖然,你將想改變間隔)。
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);
}
「正確」的方法是響應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,如果屏保密碼是通過在Vista或以上策略啓用,這是不行的。大概以編程方式移動鼠標也被忽略,儘管我沒有測試過這個。
當我在家工作時,通過將鼠標線連接到從左至右擺動的桌面風扇來實現此目的。它保持鼠標移動並保持工作站不進入睡眠狀態。
您是否嘗試過Lubso的回答?雖然它會擺動鼠標,但我不確定它會阻止屏幕保護程序踢入! – 2008-09-20 17:54:18
這確實可以在Windows XP上使用密碼保護的屏幕保護程序。 – 2009-07-08 22:09:16