他のアプリにキーイベントを配送するには?

解決


みかん  2002-11-05 17:08:20  No: 50536  IP: [192.*.*.*]

どなたか教えてください。

他のアプリ(Acrobat)などにキーイベントを配送するにはどのように
したら良いのでしょうか?

補足:
ツールのBottom1を押下すると、Acrobatの開く(CTRL+O)実行される。
上記を実現する場合は、AcrobatにどのようにCTRL+Oのキーイベントを配送
すれば良いのでしょうか?

どなたか良いサンプル等を知っていましたらご教授お願いします。

編集 削除
YuO  2002-11-05 17:15:22  No: 50537  IP: [192.*.*.*]

とりあえず,Acrobatにフォーカス与えてkeybd_eventで送ってしまうのがいいかな。
他には,直接Ctrl+Oで発生する(であろう)WM_COMMANDを生成する,という方法もあります。

編集 削除
みかん  2002-11-06 11:31:29  No: 50538  IP: [192.*.*.*]

YuOさん情報ありがとう御座います。

コントロールを押下することは出来るのですが、[O]押下イベント
の指定パラメータ(仮想キーコード&スキャンコード)がわかりません。
どこか調べられるところがありましたら教えてもらえないでしょうか?

keybd_event(VK_CONTROL,0x9d,KEYEVENTF_EXTENDEDKEY|0,0);
/*ここに[O]押下イベントを入れたい*/
keybd_event(VK_CONTROL,0x9d,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);

開発環境は VC++6 Win2000 です

お願いします。

編集 削除
みかん  2002-11-06 15:10:37  No: 50539  IP: [192.*.*.*]

補足:下記の通り記述するとキー配送(CTRL+W)できました。

keybd_event(VK_CONTROL,0x9d,KEYEVENTF_EXTENDEDKEY|0,0);
keybd_event('W',0x00,KEYEVENTF_EXTENDEDKEY|0,0);
keybd_event('W',0x00,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0x9d,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);

ですが、スキャンコード(上記0x00の部分)は何を指定するのが正かが
まだ解りません。これでも良いのならいいのですが・・・。

どなたかご教授お願いします。

編集 削除
YuO  2002-11-06 18:04:00  No: 50540  IP: [192.*.*.*]

調べてみたところ,MapVirtualKeyで変換できるようです。
http://www.bcap.co.jp/hanafusa/VBHLP/keybdeve.htm

ただ,大抵全て0で済ましているようです。
ex) http://www.expertmg.co.jp/html/cti/vctips/others.htm

編集 削除
みかん  2002-11-07 08:56:48  No: 50541  IP: [192.*.*.*]

YuOさんへ

教えていただいた資料でもう少し勉強してみて
作ってみます。

ありがとう御座いました。

編集 削除