- PR -

キーボードのフック

1
投稿者投稿内容
hiroaki
会議室デビュー日: 2004/02/14
投稿数: 4
投稿日時: 2004-02-14 14:50
はじめまして、hiroakiです。

C++で SetWindowsHookEx を使用しキーボードをフック使用としています。

ウィンドウがアクティブの時にはちゃんと処理ができるのですが、
非アクティブにして、キーボードを押すと処理されず、しかも、フ
ックも解除されてしまいす。(解除しようとすると失敗するので)


winMEでは正常に動きましたが、2000,XPで上記の問題が発生します。
どのようにすればよいのか教えてください。


SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, hInst, 0);
で呼び出しています。


nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-02-14 16:20
こんにちは。

.NETでのキーボードフックについてはあまりよく知らないんですが、Win32でやってたころの知識では、アプリケーションを超えてシステムフックするには、DLL化しないといけませんでした。
.NETでも同じかな。というか.NET?

Win32ですが、こちらが参考になるかも
http://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm

#
#SetWindowsHookExと書いてありましたな。ということでWin32Apiですね。。。

[ メッセージ編集済み 編集者: nodera 編集日時 2004-02-14 16:21 ]
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-02-14 18:21
諸農です。

VC#でのトピックになりますが、こちらが参考になると思います。

[HOWTO] Visual C# .NET で Windows フックを設定する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;318804

マネージドC++(VC++.NET)では可能なんでしょうか?

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
hiroaki
会議室デビュー日: 2004/02/14
投稿数: 4
投稿日時: 2004-02-14 21:53
hiroakiです。

諸農さん、noderaさんご返事ありがとうございます。

Win32でシステムフックを使用したことがないので、DLL化しないといけないとは
知りませんでした。
.NETでもできますね。フックを使用するソフトを作成している人がいましたので。

だから、何でできないのか不思議だったんですが、そのソフトもフックの
ところは DLL で使用してました。ようやく解決です。

C#でのトピックですが、Framework はグローバルフックができないとなってます
ので、非アクティブ時には取得できなかったです。

ただ、winME でグローバルなシステムフックできたのはなぜなんでしょうかね。。。
1

スキルアップ/キャリアアップ(JOB@IT)