強制終了について


miyo  URL  2004-03-17 13:14:40  No: 112417  IP: [192.*.*.*]

はじめまして、よろしくお願いします。
作成したプログラムが、強制終了によって、終了されないようにするためには、
どうすれば良いのでしょうか。

具体的には、[Alt]+[Ctrl]+[Del]を、動作させないようにしたいのですが。
元々、そんなことが可能なのかを調べてみたところ、下のURLのソフトウェアは、
それを可能にしているみたいです。 http://www5f.biglobe.ne.jp/~ikemura/aboutkagi.htm
Win2000環境では、[Alt]+[Ctrl]+[Del]を押した際に表示される
「Windows のセキュリティー」ダイアログの「タスクマネージャ」の
ボタンが無効になっていました。

同じことをするには、どうすればよいでしょうか。
どうぞ、よろしくお願いします。

編集 削除
いな  2004-03-17 14:36:42  No: 112418  IP: [192.*.*.*]

これはVBではなくVCで作れれていませんか?

編集 削除
nanashi  2004-03-17 14:43:45  No: 112419  IP: [192.*.*.*]

> 具体的には、[Alt]+[Ctrl]+[Del]を、動作させないようにしたいのですが。

キーボードをグローバルフックする必要があります。
グローバルフックはDLLが無いと出来ません。
なのでVBだけでは作れません。

編集 削除
Say  2004-03-17 21:07:47  No: 112420  IP: [192.*.*.*]

残念ながら、Win2000の場合、
グローバルフックではできません。
GINAを書き換える必要があり、お奨めできません。

編集 削除
miyo  URL  2004-03-18 20:18:52  No: 112421  IP: [192.*.*.*]

いなさん、nanashiさん、Sayさん。
ご返答ありがとうございました。

> 具体的には、[Alt]+[Ctrl]+[Del]を、動作させないようにしたいのですが。
上記の処理は、Win95系では次の処理で、実現することができました。

'強制終了ダイアログとウィンドウズキーの使用禁止。
Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Const SPI_SCREENSAVERRUNNING = 97

Private Sub Command1_Click()
    '強制終了ダイアログの表示を非許可。
    Dim Ret As Long
    Dim Ret2 As Boolean
    Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, Ret2, 0)
End Sub

Private Sub Command2_Click()
    '強制終了ダイアログの表示を許可。
    Dim Ret As Long
    Dim Ret2 As Boolean
    Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, Ret2, 0)
End Sub

このAPIでは、スクリーンセイバーのパスワードロックの際に使用されるようです。

しかし、Win95系では、実現できたもののNT系では、この処理は無効のようで、実現できませんでした。

右記のソフトでは、( http://www5f.biglobe.ne.jp/~ikemura/aboutkagi.htm 
「Windows のセキュリティー」ダイアログの「タスクマネージャ」の
ボタンが無効になる処理※を行っているようですが、
このようにする方法をご存じでしたら、よろしくお願いします。

※「タスクマネージャ」ボタンが、非アクティブになるようです。
  (Command1.Enabled = False  のようなイメージ)

編集 削除