WindowsXPでCtrl+Alt+Delキーを無効にするにはどうすればいいのでしょう?
過去ログを拝見し、Win95での実装は確認できたのですが、WinXPでは動作しませんでした。
どなたか分かる方いらっしゃいましたら教えて下さい。
グローバルキーフックすれば可能かと思いますが、
グローバルフックでは
フックプロシージャをDLL内に置く必要があり、
DLLを作れないVBでは不可能です。
Sayさん、早速のご教授ありがとうございます。
申し訳ございませんが、サンプルソース等ありましたら教えて頂けませんでしょうか?
VB初心者でして、「グローバルフック」で調べてみたのですがよくわかりません。。。
よろしくお願いします。
>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でマウスジェスチャ
Win32 API の、『SetWindowsHookEx』を調べてみて下さい。
ここなんか参考になります。
http://www.tomosan.org/dev/vs/vctips01.html
以上。
VBでもグローバルフックは可能です。
ただし、すべてフックすると、VBが固まります。
WH_KEYBORADでキー状態をフックすることもできますが、
ALT+TABやCTRL+ESCAPEなどをとめることはできても、
Ctrl+Alt+Delをとめるのは、また違ったことが必要になると思います。
多分、すべてのフックの前にタスクマネージャを呼び出すための
フックが存在するんじゃないでしょうか。
海外のサイトですが、一応Alt+Tabとかを止めるサンプルがあります。
http://guille.costasol.net/API/deshabilitarAltTab.asp
これを参考にCTRL+ALT+DELもとめようとしましたが、
私は失敗しました(笑)
その分岐には入りますが、タスクマネージャはしっかりでます。
Sayさんの言うように
>グローバルフックは作りが不完全だと
>システムごとフリーズする危険行為ですし、
>サンプルをちょちょこっといじってOK
>というわけにはいきませんので
>冷たいようですが、自分で調べてわからないようなら
>手を出さないほうが無難です。
ですので、自己責任でおねがいします。
そもそも、VBでフックをするのは、
そこが非常に大きなボトルネックになりかねないので、
お勧めできません。
「へー、一応VBでもできるんだ」
程度に見てください。
参考までに
Ctrl+Alt+Delの処理は普通msgina.dllが担当してますので、
これを自作ginaにすげかえて無効化する、という手もあります。
(くどいようですがこれもVBでは作れません。)
ただし、失敗するとWindowsを再インストールすることになります。
グローバルフックより凶悪かも・・・。
ツイート | ![]() |