Windowsの他のアプリ上でのマウス操作をフックするためにSetWindowsHookExを使用しています。
32bit Windows上では32bit版のDLLを作成し、その中でSetWindowsHookExを呼び出すことで期待した動作をすることができていました。
ところが、64bit Windows上で同様のことをやる場合、32bit版のDLLと64bit版のDLLを用意してそれぞれSetWindowsHookExを呼び出すわけですが、コールバックされた関数でGetCurrentProcessId()を使って確認すると、マウス操作をしているアプリのプロセスではなく、DLLをロードした実行ファイルのプロセスになってしまいます。
試しに64bit版DLLのSetWindowsHookExだけを外すと32bitアプリ上では期待通りの動作をします。
また逆に32bit版DLLのSetWindowsHookExだけを外すと64bitアプリ上では期待通りの動作をします。
つまり、64bit/32bit版それぞれのSetWindowsHookExがお互い干渉して期待した動作をしないような感じです。
それぞれのDLLは独立した実行ファイルからロードしたものなのでSetWindowsHookExが干渉することはありえないはずですが、これ以上どのように調べていったらいいのかお手上げ状態です。
詳しい方がいらっしゃいましたらご指導のほどよろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/26 14:44
2015/03/26 17:54
2015/03/30 12:49