クリップボードの文字列をフォーカスのあるエディットボックスに
貼り付けることをプログラムからやりたいと思っています。
普通のエディットボックスは、ウィンドウハンドル、又は、コントロールIDを
取得できるので、WM_PASTEを送信して貼り付けていますが、
IE(Internet Explorer)内のホームページにあるエディットボックスは、
ウィンドウハンドルが取得できません。
フォーカスのあるエディットボックスを対象にしたいので、
CWnd::GetFocus()などで取得していたのですが、IEのエディットのみ
取得できません。
そこで、エディットコントロール用のメッセージ(EN_SETFOCUSなど)を
フックしてウィンドウハンドルを取得してみたのですが
やっぱり、IEのエディットコントロールのみ取得できません。
どうしたら、できるのでしょう?
IE(のコントロール)はウインドウレスコントロールなので、
1つ1つの部品全て、ウインドウではありません。
よってウインドウハンドルもありません。
どこからIEにアクセスしてるのか知りませんが、
IEのテキストのエディットにアクセスする方法はあります。
IEのコントロールをホストするにしても、
IEをアウトプロセスサーバーとしてアクセスするにしても、
あるいはBHO、バンドオブジェクト、色々ありますが、
どちらにしてもインターフェイスからアクセスする事になります。
ご返答ありがとうございます。
現在、色々と調ながら試行錯誤しております。
自作プログラム(MFCで作成)から、フォーカスのあるIEのテキストエディットに
任意の文字列を貼り付けようとしています。
経験のないCOM(ActiveX)を使用すればいろいろなことができそうなので、
(http://www.nitoyon.com/vc/tips/ie_component.htm)を参考に、
アクティブなIEのウィンドウウハンドルから、IWebBrowser2を取得することができました。
そこから、IHTMLxxx系のインターフェースを取得して色々と試していますが、
IE内でフォーカスのあるテキストエディットを操作することができていません。
どのインターフェースを使用していけばいいのでしょうか?
ここまで分かれば、COMに関しての知識があれば検討がつくのでしょうが、
なにせ初心者なのでお教えいただけないでしょうか?
自己レスです。
海外サイトであるCodGuruのIEprogrummingを眺めていたら、なにやら
「How to add clipboard use to CHtmlView」を発見。
内容を見ると「Easy」なる文字が…
サンプルコード内の
ExecWB(OLECMDID_CUT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
を試してみると、なんと、IEのテキストエディットに文字が
クリップボード経由で貼り付いてしまった。
2週間試行錯誤して探していたものが、この1行ですんでしまうなんて。
でも、方法が見つかってよかったです。
レスくれた方、ありがとうございます。