none
スクリーンのロック RRS feed

  • 質問

  • ■環境

    WindowsXP Pro sp2  / VisualStudio.NET2005(VB)

     

    ■やりたいこと

    プログラム中のある変数の値に応じて、キーとマウス(Ctl+Alt+Delも)利用できなくしたいのですが、どうしたらロック状態(またその解除方法も)にできるのでしょうか?

    ■試してみたこと

    Keyイベント、Mouseイベントでは終了しないスクリーンセーバを起動するようにしてみたのですがこれでは、プログラムが起動していないときに起動したスクリーンセーバが解除できなくなります。

     

     

    2007年6月4日 12:57

回答

  • ここは ASP.NET のフォーラムですので、 まずは、 その範囲で。

     

    ASP.NET を含む Web アプリケーションでは、 クライアントコンピュータのキーボードやマウスをコントロールすることはできません


    ※ とある Web ページ (ホームページ) を見に行っただけで、 キーとマウスが利用できなくなったとしたら…?

     

    では、 Web アプリケーションではなくて、 Windows 用のアプリケーションならどうでしょう?
    OS から信頼された状態でインストールされたアプリケーションは、 基本的にはなんでもできます。 ので、 キーボードやマウスをコントロールすることも、 基本的には可能です。

    ただし、 Ctrl + Alt + Del は無効に出来ません

     

    http://support.microsoft.com/kb/125614/en-us
    KB: 125614

    Cannot disable CTRL+ESC and ALT+TAB under Windows NT

    The low level keyboard hook can also detect CTRL+ALT+DEL, but it cannot disable it.

     

    なぜなら、 Ctrl + Alt + Del は、 必ず真っ先に GINA ( Graphical Identification and Authentication ) が処理するからです。
    そこで一つの方法としては…

     

    http://msdn.microsoft.com/msdnmag/issues/02/09/CQA/
    MSDN Magazine : September 2002

     

    So one way to disable Ctrl+Alt+Del is to write a new MyGina.dll with stubs that call the old msgina.dll and a WlxLoggedOnSAS function that gobbles the key. Or, you could write a keyboard driver.

    …自前の GINA を作って置き換える、 あるいは、 ( GINA よりさらに先に処理をする ) キーボードドライバを書いて置き換える、 という方法が考えられます。

    しかし、 考えられはしますが、 とてもそんなものを作れるとは思えませんね。

     

    上の MSDN Magazine の記事は、 その後が秀逸です。 逆転の発想で、 「Ctrl + Alt + Del  を潰せなくても、 タスクマネージャが起動しなければいいじゃないか」 というのです。 そして、 その他のウィンドウを切り換えるショートカット ( Alt+Tab, Ctrl+Esc, Alt+Esc など ) を潰す方法と合わせて、 サンプルコードがダウンロード出来るようです。

     

    ※ この手法、 GINA が廃止された Vista では、 通用するかどうかは不明です。 念のため。

    2007年6月12日 7:36