グローバルフックを定義したアプリを制御したいと考えています。
制御するにはグローバルフックにて定義した文字をキーエミュレーションを行えばいいのです
が、困ったことに利用しているOSがWindows8.1 Industoryのためか、以下の現象に悩まされています。
・同じキーコードを連続して入力したようにすると、以後何を押してもグローバルフックが機能しなくなってしまう。
・2つのアプリが別々に違うコードでグロバールフックを定義しているため、2つ目のアプリ用のキーコードを入力したようにすると、1つ目に対しては全く機能しなくなる。
なお、キーエミュレーションは以下のようなコードで組んでいます。
uint scanCode = 0; scanCode = MapVirtualKey(cKey, 0); keybd_event(cKey, (byte)scanCode, 0, 0); scanCode = MapVirtualKey(cKey, 0); keybd_event(cKey, (byte)scanCode, 2, 0);
コードで示したように、Win32APIを利用しています。Win32APIを利用しているのはテンキーを利用しているため、SendKeysではコードが送信できないためです。
また、SendInput関数に変えてみましたが、変化がありませんでした。
(注:上記のコードは1つのボタンに割り当てています。)
実用にしっかり耐えるにはどのように修正すべきがご教授お願いします。
回答1件
あなたの回答
tips
プレビュー