他アプリのテキストフィールドに文字を送るには?


蟷螂の斧  2003-10-28 10:29:26  No: 80029  IP: [192.*.*.*]

他アプリのテキストフィールドに文字を送りたいのですが、
現在、送りたい他アプリをアクティブにして最前面に表示してクリップボードにテキストを保存してアクティブになっているテキストフィールドにコピーするという感じです。
これだとテキストフィールドがアクティブになっていないと文字は送れないし、
また、違うウィンドウをアクティブにするとそこに文字が送られてしまいます。

指定した他ウィンドウが最小化されていたとしても、テキストフィールドに文字が正しく送られるにはどうすればよいのでしょうか?
ご教授お願いします。

編集 削除
1412  2003-10-28 11:14:24  No: 80030  IP: [192.*.*.*]

他のアプリっていうのは、自分で作成したアプリですか?

基本的な考え方としては、
テキストボックスのウィンドウハンドルを取得して、
SetWindowText API や SendMessage API を使用して
そのウィンドウに文字列を送るという感じです。

編集 削除
Say  2003-10-28 11:28:16  No: 80031  IP: [192.*.*.*]

>他のアプリっていうのは、自分で作成したアプリですか?
自作ならDDEという手もあります。

編集 削除
いちゆ  2003-10-29 11:01:39  No: 80032  IP: [192.*.*.*]

DDEのほかにActiveXEXEという手もあります…親子関係が強いですけど。

編集 削除
魔界の仮面弁士  2003-10-29 12:24:14  No: 80033  IP: [192.*.*.*]

> テキストボックスのウィンドウハンドルを取得して、
> SetWindowText API や SendMessage API を使用して
> そのウィンドウに文字列を送るという感じです。

今回は『他アプリ』なので、SetWindowText APIではなく、
WM_SETTEXT メッセージの方が適切かと。

編集 削除
ぴろC  2003-10-30 08:58:02  No: 80034  IP: [192.*.*.*]

他アプリのテキストフィールドのハンドルとか取得できますか?
他アプリのウィンドウのハンドルの取得はやり方がわかるのですが、
そのウィンドウに設置されているテキストフィールドとかコンボボックスとかに
文字をセットしたいのですが、可能でしょうか?

編集 削除
Say  2003-10-30 09:10:13  No: 80035  IP: [192.*.*.*]

>他アプリのテキストフィールドのハンドルとか取得できますか?
可能です。
FindWindowExについて調べてみてください。
>そのウィンドウに設置されているテキストフィールドとか
>コンボボックスとかに文字をセットしたいのですが、可能でしょうか?
可能です。
Textプロパティに対しては魔界の仮面弁士さんが挙げられたように
WM_SETTEXTをSendMessageしてください。
コンボボックスの操作に関してはヘルプで
CB_〜系のメッセージを調べてみてください。

編集 削除
ぴろC  2003-10-30 20:57:37  No: 80036  IP: [192.*.*.*]

魔界の仮面弁士さん、Sayさんありがとうございます。
他アプリにメッセージを送ることができました。
あと一つわからないのですが、
親ウィンドウ  または  子ウィンドウに Enterキーのアクションを
送ることは可能ですか?
改行ではなくて、Enterキーアクションを送りたいのですが
可能でしょうか?

編集 削除
Say  2003-10-30 23:50:55  No: 80037  IP: [192.*.*.*]

キーストロークの合成はkeybd_event(API)です。

編集 削除