1

アプリケーションのシステム レベルで特定の期間、キーボード/マウス、またはその両方を無効にする必要があります。

私はそれを行うために以下を持っています

    public partial class NativeMethods
    {
        /// Return Type: BOOL->int
        ///fBlockIt: BOOL->int
        [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "BlockInput")]
        [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
        public static extern bool BlockInput([System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt);

    }

このコードでタスクは完了しますが、ユーザーが CTRL+ALT+DELETE をクリックすると、キーボードとマウスが再び機能します。これを止める方法を教えてくれる人はいますか?

4

1 に答える 1

2

Windows レベルのショートカットとマクロ ( CTRL+ ALT+ DELWINDOWS+ LALT+ TABCTRL+ SHIFT+ ESC) は、アプリケーションによって処理されないメッセージであり、Windows ランタイムによって処理されます。WndProcこれは、単純なフォームを作成し、メソッドをオーバーライドしてメッセージを確認することで確認できます。
とにかく、ここにキーボードをフックする方法に関するいくつかのチュートリアルがあります:

  • http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
  • http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C
  • http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx

于 2012-12-17T13:15:36.053 に答える