VisualBasic2005でプログラムしていますが、そのアプリケーションが起動している間、Ctrl+Alt+Delが効かないようにする方法はあるでしょうか?(VBでなくOSを触ることによって実現しても結構です)

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2008/03/31 17:31:45
  • 終了:2008/04/07 17:35:02

回答(3件)

id:tarutatta No.1

tarutatta回答回数20ベストアンサー獲得回数02008/03/31 17:50:23

ポイント27pt

スクリーンセーバーが動いていることにしてしまえば Ctrl+Alt+Del は使えなくなります。

SystemParametersInfo という API を用いることによって実現できます。

SystemParametersInfo ( SPI_SETSCREENSAVERRUNNING, TRUE, NULL, 0 ) ;
SystemParametersInfo ( SPI_SETSCREENSAVERRUNNING, FALSE, NULL, 0 ) ;

VB 風に行くと

' 宣言
Public Declare Auto Function SystemParametersInfo Lib "user32" (ByVal uAction As Integer, ByVal uParam As Integer, ByRef pvParam As Integer, ByVal fuWinIni As Integer) As Boolean
Public Const SPI_SCREENSAVERRUNNING = 97&

' キー無効化
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1&, 0&, 0&)

' キー有効化
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0&, 0&, 0&)

で行けるかと思います。

終了処理にキーを有効化するコードを入れることを忘れないよう注意してください。

参考:Visual Basic .NET または Visual Basic 2005 を使用してスクリーン セーバーを作成する方法

id:crashtruck

ありがとうございます。他の方法もあればご教授いただければ幸いです。

2008/03/31 17:55:51
id:tarutatta No.2

tarutatta回答回数20ベストアンサー獲得回数02008/03/31 18:25:55

ポイント27pt

調べてみたら Windows 95 と 98 専用の方法みたいです。申し訳ない。

最近の Windows でやるには(VB.NET 単体では)かなり面倒なことをしなければならないようです。

Win32 プラットフォームでタスク スイッチを無効にする方法

[HOWTO] Visual C# .NET で Windows フックを設定する方法

id:crashtruck

そうでしたか。レジストリ等をいじる方法でも良いのですが…回答上限を上げましたので、ご存知ならお教え下さい。

2008/03/31 19:09:59
id:tarutatta No.3

tarutatta回答回数20ベストアンサー獲得回数02008/03/31 21:12:08

ポイント26pt

私も気になったので C# でキーボードをフックするプログラムを書いてみたのですが、ローレベルフックを用いても Ctrl+Alt+Delete は制御できないようです。

色々調べてみた結果、GINA を使えば良いということが解りました。…が、危険を伴う(システムが起動しなくなる)方法のようで、他所のシステム上で動かすようなプログラムでこの方法を利用するのは正直あまりお勧めできません。

参考:GINAによるCTRL+ALT+DELの無効化

id:crashtruck

そうですか。いろいろと有難うございました。

2008/04/01 08:57:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません