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

解決


moith  2003-10-02 00:53:32  No: 52230

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

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

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

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

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


ぬら  2003-10-08 11:54:30  No: 52231

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

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

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


moith  2003-10-08 23:38:11  No: 52232

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

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

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

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

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


moith  2003-10-10 00:52:38  No: 52233

自己レスです。

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

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

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加