質問

わかりました。これは少し見栄を張ったアプリですが、今日職場でトレーニング クラスに参加しており、マシンが 10 分ごとにロックされるように設定されている状況がありました。そうですね、トレーナーがスライドの変更ではなく、会話に興奮すると、マシンがロックしてしまいます。

4 分ごとに 1 ピクセルずつマウスを動かすだけのタスクバー アイコンだけを備えた小さなアプリを作成したいと考えています。

Delphi (私の得意な言語) では 3 つの方法でこれを行うことができますが、仕事で C# に移行する予定なので、そこで最も抵抗が少ない方法を知りたいと思っています。

役に立ちましたか?

解決

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

他のヒント

これを行う「正しい」方法は、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 以降のポリシーによってスクリーンセーバーのパスワードが有効になっている場合、これは機能しません。おそらくプログラムによるマウスの移動も無視されますが、これについてはテストしていません。

自宅で仕事をするときは、左から右に振動するデスクトップファンにマウスのコードを結び付けます。マウスを動かし続け、ワークステーションがスリープ状態になるのを防ぎます。

このようなものはうまくいくはずです(ただし、あなたは 意思 間隔を変更したい)。

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