IEでフォーカスのあるエディットボックスに文字列を貼り付けるには?

解決


moith  2003-10-01 15:53:32  No: 52230  IP: [192.*.*.*]

クリップボードの文字列をフォーカスのあるエディットボックスに
貼り付けることをプログラムからやりたいと思っています。

普通のエディットボックスは、ウィンドウハンドル、又は、コントロールIDを
取得できるので、WM_PASTEを送信して貼り付けていますが、
IE(Internet Explorer)内のホームページにあるエディットボックスは、
ウィンドウハンドルが取得できません。

フォーカスのあるエディットボックスを対象にしたいので、
CWnd::GetFocus()などで取得していたのですが、IEのエディットのみ
取得できません。

そこで、エディットコントロール用のメッセージ(EN_SETFOCUSなど)を
フックしてウィンドウハンドルを取得してみたのですが
やっぱり、IEのエディットコントロールのみ取得できません。

どうしたら、できるのでしょう?

編集 削除
ぬら  2003-10-08 02:54:30  No: 52231  IP: [192.*.*.*]

IE(のコントロール)はウインドウレスコントロールなので、
1つ1つの部品全て、ウインドウではありません。
よってウインドウハンドルもありません。

どこからIEにアクセスしてるのか知りませんが、
IEのテキストのエディットにアクセスする方法はあります。

IEのコントロールをホストするにしても、
IEをアウトプロセスサーバーとしてアクセスするにしても、
あるいはBHO、バンドオブジェクト、色々ありますが、
どちらにしてもインターフェイスからアクセスする事になります。

編集 削除
moith  2003-10-08 14:38:11  No: 52232  IP: [192.*.*.*]

ご返答ありがとうございます。

現在、色々と調ながら試行錯誤しております。
自作プログラム(MFCで作成)から、フォーカスのあるIEのテキストエディットに
任意の文字列を貼り付けようとしています。

経験のないCOM(ActiveX)を使用すればいろいろなことができそうなので、
(http://www.nitoyon.com/vc/tips/ie_component.htm)を参考に、
アクティブなIEのウィンドウウハンドルから、IWebBrowser2を取得することができました。

そこから、IHTMLxxx系のインターフェースを取得して色々と試していますが、
IE内でフォーカスのあるテキストエディットを操作することができていません。

どのインターフェースを使用していけばいいのでしょうか?
ここまで分かれば、COMに関しての知識があれば検討がつくのでしょうが、
なにせ初心者なのでお教えいただけないでしょうか?

編集 削除
moith  2003-10-09 15:52:38  No: 52233  IP: [192.*.*.*]

自己レスです。

海外サイトであるCodGuruのIEprogrummingを眺めていたら、なにやら
「How to add clipboard use to CHtmlView」を発見。

内容を見ると「Easy」なる文字が…
サンプルコード内の
  ExecWB(OLECMDID_CUT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
を試してみると、なんと、IEのテキストエディットに文字が
クリップボード経由で貼り付いてしまった。

2週間試行錯誤して探していたものが、この1行ですんでしまうなんて。

でも、方法が見つかってよかったです。

レスくれた方、ありがとうございます。

編集 削除