人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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


●質問者: crashtruck
●カテゴリ:コンピュータ インターネット
✍キーワード:OS VB アプリケーション プログラム
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tarutatta
●27ポイント

スクリーンセーバーが動いていることにしてしまえば 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 を使用してスクリーン セーバーを作成する方法

◎質問者からの返答

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


2 ● tarutatta
●27ポイント

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

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

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

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

◎質問者からの返答

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


3 ● tarutatta
●26ポイント

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

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ