Win32API質問箱 Build25
■ このスレッドは過去ログ倉庫に格納されています
0302デフォルトの名無しさん
NGNGサービスからキーボードの入力をブロックするプログラムを作成しているのですが、
上手くいかず困っています。お知恵をお貸しください。
行なった事は以下の通りです。ServiceはSystemLocalAccountで動作しています。
1)LogonUserのトークンを取得
2)<http://support.microsoft.com/default.aspx?scid=kb;ja;173687>のサンプル
コードを参考にして、ApplicationDesktopと接続
3)1のトークンを使ってImpersonatLoggedOnUser()で偽装(*1)
4)DLL内に作成した関数で、WH_KEYBOARD(*2)とWH_MOUSEを指定してHOOKをかける
5)RevertToSelf()で偽装解除(*1)
6)2を参考にしてApplicationDesktopとの接続を終了
上記の処理で概ねキー入力のブロックは出来ているのですが、コマンドプロンプトが
起動していると、コマンドプロンプト内でキー入力可能な状態になってしまいます。
上記、4のみを行なう通常のApplicationを作成してLogon中のUserAccount上で実行す
ると上記の不具合は、発生しませんでした。
私としては、Logon中のUserAccount上でHookApplicationを実行するのと同じ事をして
いるつもりなのですが、どうにも腑に落ちません。何か間違った事をしてますでしょ
うか?
(*1)元は無かったのですが、UserContextの問題なのかと思い追加しました
(*2)WH_KEYBOARD_LLも試してみましたが、結果はかわりませんでした
■ このスレッドは過去ログ倉庫に格納されています