他アプリのテキストフィールドに文字を送りたいのですが、
現在、送りたい他アプリをアクティブにして最前面に表示してクリップボードにテキストを保存してアクティブになっているテキストフィールドにコピーするという感じです。
これだとテキストフィールドがアクティブになっていないと文字は送れないし、
また、違うウィンドウをアクティブにするとそこに文字が送られてしまいます。
指定した他ウィンドウが最小化されていたとしても、テキストフィールドに文字が正しく送られるにはどうすればよいのでしょうか?
ご教授お願いします。
他のアプリっていうのは、自分で作成したアプリですか?
基本的な考え方としては、
テキストボックスのウィンドウハンドルを取得して、
SetWindowText API や SendMessage API を使用して
そのウィンドウに文字列を送るという感じです。
>他のアプリっていうのは、自分で作成したアプリですか?
自作ならDDEという手もあります。
DDEのほかにActiveXEXEという手もあります…親子関係が強いですけど。
> テキストボックスのウィンドウハンドルを取得して、
> SetWindowText API や SendMessage API を使用して
> そのウィンドウに文字列を送るという感じです。
今回は『他アプリ』なので、SetWindowText APIではなく、
WM_SETTEXT メッセージの方が適切かと。
他アプリのテキストフィールドのハンドルとか取得できますか?
他アプリのウィンドウのハンドルの取得はやり方がわかるのですが、
そのウィンドウに設置されているテキストフィールドとかコンボボックスとかに
文字をセットしたいのですが、可能でしょうか?
>他アプリのテキストフィールドのハンドルとか取得できますか?
可能です。
FindWindowExについて調べてみてください。
>そのウィンドウに設置されているテキストフィールドとか
>コンボボックスとかに文字をセットしたいのですが、可能でしょうか?
可能です。
Textプロパティに対しては魔界の仮面弁士さんが挙げられたように
WM_SETTEXTをSendMessageしてください。
コンボボックスの操作に関してはヘルプで
CB_〜系のメッセージを調べてみてください。
魔界の仮面弁士さん、Sayさんありがとうございます。
他アプリにメッセージを送ることができました。
あと一つわからないのですが、
親ウィンドウ または 子ウィンドウに Enterキーのアクションを
送ることは可能ですか?
改行ではなくて、Enterキーアクションを送りたいのですが
可能でしょうか?
キーストロークの合成はkeybd_event(API)です。
ツイート | ![]() |