2

ユーザーがMIDI接続デバイスを介して入力を提供するC#WinFormsアプリケーションを開発しました。ユーザーは、キーボードやマウスを使用せずに長期間移動します。

MIDIメッセージを受信したときに、これがユーザーアクティビティとしてカウントされることをシステムに「伝える」ためにできることはありますか(つまり、キーを押す)。MIDIデバイスがアクティブに使用されている場合に、スクリーンセーバーやタイムロックアウトが発生しないようにします。

私のリクエストは、私が見た他のリクエストとは異なると思います。なぜなら、彼らはアプリケーションの存続期間中スクリーンセーバーを無効にし、受信したMIDI入力をユーザーの対話性としてカウントしたいからです。

システムユーザーのアクティビティを示すためにMIDI入力を受け取ったときに呼び出すことができるものはありますか?

4

2 に答える 2

2

これを行うように見えるCodeProjectプロジェクトは次のとおりです。

http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx

SetScreenSaverTimeout(GetScreenSaverTimeout())MIDI入力を受け取るたびに彼のメソッドを呼び出すことができるようです。

于 2010-03-26T00:39:24.080 に答える
0

Windowsは、スクリーンセーバーまたはモニターパワーセーバーをアクティブにする前に、各ウィンドウにメッセージを送信します。画面が変更されないようにするために必要なのは、これらのメッセージを飲み込むことだけです。

const int WM_SYSCOMMAND = 0x0112, SC_SCREENSAVE = 0xF140, SC_MONITORPOWER = 0xF170;
protected override void WndProc(ref Message m)
{
    if( m.Msg == WM_SYSCOMMAND ) //Intercept System Command
    {
        if( m.WParam.ToInt32() == SC_SCREENSAVE || m.WParam.ToInt32() == SC_MONITORPOWER )
        { 
            //Intercept ScreenSaver and Monitor Power Messages
            //MessageBox.Show("Reached SC/PowerCondition");
            return; // 
        }
    }   
    base.WndProc(ref m);
}

サンプルコードは、さらに読むとともに、この開発者フュージョンスレッドからのものです。

于 2010-03-26T02:14:08.990 に答える