WindowsXPでCtrl+Alt+Delキーを無効にするには


ノース  2003-06-20 13:03:31  No: 78386  IP: [192.*.*.*]

WindowsXPでCtrl+Alt+Delキーを無効にするにはどうすればいいのでしょう?
過去ログを拝見し、Win95での実装は確認できたのですが、WinXPでは動作しませんでした。
どなたか分かる方いらっしゃいましたら教えて下さい。

編集 削除
Say  2003-06-20 13:08:32  No: 78387  IP: [192.*.*.*]

グローバルキーフックすれば可能かと思いますが、
グローバルフックでは
フックプロシージャをDLL内に置く必要があり、
DLLを作れないVBでは不可能です。

編集 削除
ノース  2003-06-20 13:26:37  No: 78388  IP: [192.*.*.*]

Sayさん、早速のご教授ありがとうございます。
申し訳ございませんが、サンプルソース等ありましたら教えて頂けませんでしょうか?
VB初心者でして、「グローバルフック」で調べてみたのですがよくわかりません。。。
よろしくお願いします。

編集 削除
Say  2003-06-20 17:49:28  No: 78389  IP: [192.*.*.*]

>VB初心者でして
そもそも「VBでの作成は不可能」ですから
VBの知識はあまり関係ありませんが、
Windows(SDK)とC/C++についてかなり高度な知識が必要です。
>サンプルソース等ありましたら教えて頂けませんでしょうか?
VBで不可能なのにサンプルあるわけないでしょう。

グローバルフックは作りが不完全だと
システムごとフリーズする危険行為ですし、
サンプルをちょちょこっといじってOK
というわけにはいきませんので
冷たいようですが、自分で調べてわからないようなら
手を出さないほうが無難です。

一応わかりやすい解説サイトをあげておきます。
といっても、VBではありませんが。

猫でもわかるプログラミング 
http://www.kumei.ne.jp/c_lang/
    Windows SDK編 第2部   
        第160章 メッセージフックの基礎 
        第161章 キーボード・フック 

Codian
http://www.kab-studio.com/Programing/Codian/
    DLL・フック
      ・フックの仕組み
      ・ローカルフック
      ・システムフック 

窓プログラミング
http://hp.vector.co.jp/authors/VA016117/winsdk.html
      グローバルフックを使う


ローカルフックになりますが、VBで解説したサイトをひとつ・・・。
フックの参考ぐらいにはなるでしょう。

M.Oshikiriのホームページ
http://www.geocities.co.jp/SiliconValley/7406/
    Tips
        VBでマウスジェスチャ

編集 削除
岡田 之仁  2003-06-20 18:18:59  No: 78390  IP: [192.*.*.*]

Win32 API の、『SetWindowsHookEx』を調べてみて下さい。

ここなんか参考になります。
http://www.tomosan.org/dev/vs/vctips01.html

以上。

編集 削除
Loreley  2003-06-21 10:55:17  No: 78391  IP: [192.*.*.*]

VBでもグローバルフックは可能です。
ただし、すべてフックすると、VBが固まります。

WH_KEYBORADでキー状態をフックすることもできますが、
ALT+TABやCTRL+ESCAPEなどをとめることはできても、
Ctrl+Alt+Delをとめるのは、また違ったことが必要になると思います。

多分、すべてのフックの前にタスクマネージャを呼び出すための
フックが存在するんじゃないでしょうか。

海外のサイトですが、一応Alt+Tabとかを止めるサンプルがあります。
http://guille.costasol.net/API/deshabilitarAltTab.asp

これを参考にCTRL+ALT+DELもとめようとしましたが、
私は失敗しました(笑)
その分岐には入りますが、タスクマネージャはしっかりでます。

編集 削除
Loreley  2003-06-21 10:57:22  No: 78392  IP: [192.*.*.*]

Sayさんの言うように

>グローバルフックは作りが不完全だと
>システムごとフリーズする危険行為ですし、
>サンプルをちょちょこっといじってOK
>というわけにはいきませんので
>冷たいようですが、自分で調べてわからないようなら
>手を出さないほうが無難です。

ですので、自己責任でおねがいします。

そもそも、VBでフックをするのは、
そこが非常に大きなボトルネックになりかねないので、
お勧めできません。
「へー、一応VBでもできるんだ」
程度に見てください。

編集 削除
Say  2003-06-21 12:12:25  No: 78393  IP: [192.*.*.*]

参考までに
Ctrl+Alt+Delの処理は普通msgina.dllが担当してますので、
これを自作ginaにすげかえて無効化する、という手もあります。
(くどいようですがこれもVBでは作れません。)

ただし、失敗するとWindowsを再インストールすることになります。
グローバルフックより凶悪かも・・・。

編集 削除