C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 【C++】IE操作でtextareaに値を入れる


(過去ログ 95 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■56957 / inTopicNo.1)  【C++】IE操作でtextareaに値を入れる
  
□投稿者/ key (6回)-(2011/02/06(Sun) 21:36:07)

分類:[C/C++] 

こんにちは。Topic.No 56946で質問させていただいたものです。
この度はプログラムでhtml上のtextareaに値が入れ方がわからなくて質問をさせて頂きます。

MSHTMLを使い、html上のtextareaにデータを入れるのを以下のように実装したのですが、入れたはずの値が表示されません。(内部では入っているようですが・・・)
なぜ他の項目のように値がみえないのでしょうか?
よろしくお願いいたします。

SHDocVw::IWebBrowser2Pt m_pIE.CreateInstance(L"InternetExplorer.Application");
//希望のページに飛ぶ(中略)
MSHTML::IHTMLDocument3Ptr pDocument( m_pIE->Document );

pCollection = pDocument->getElementsByTagName(_bstr_t(L"textarea"));
for (long i = 0; i < pCollection->length; ++i)
{
MSHTML::IHTMLTextAreaElementPtr pText(pCollection->item(_variant_t(i)));
//!本文
if( !_wcsicmp(pText->name, L"項目名" ) ){
pText->value= _bstr_t( "ほげ" );
}
}
引用返信 編集キー/
■56964 / inTopicNo.2)  Re[1]: 【C++】IE操作でtextareaに値を入れる
□投稿者/ Azulean (687回)-(2011/02/07(Mon) 00:27:47)
そのままの回答ではありませんが、調べ方ということで紹介しておきます。


C# などで使える .NET Framework の WebBrowser クラスの Document プロパティは MSHTML の構造をそのまま公開するような実装になっています。
このことから、C# の WebBrowser を使ったサンプルコードが、今の問題を解決するための参考になる可能性があります。
(あくまで WebBrowser の Document プロパティの場合です。ほかの場合は全く違う考え方になることも多いので、あまりアテにしないように)

「webbrowser Textarea C#」(全言語)
http://www.google.com/search?q=webbrowser+Textarea+C%23&num=50&hl=ja&prmd=ivns&tbas=0&source=lnt&sa=X&ei=UrtOTZSCBo6IuAOktogV&ved=0CAYQpwUoAA

いくつかの検索結果から、以下が見つかります。

http://stackoverflow.com/questions/4824817/send-text-to-textarea-in-webbrowser

どうやら、InnerText なるものを設定しないと反映されなさそうに見えますよね。
では、C++ ではどう書かなければならないかというところで、また調べないといけませんが、新たな一歩を踏み出すチャンスを得られたのではないでしょうか。
引用返信 編集キー/
■56976 / inTopicNo.3)  Re[2]: 【C++】IE操作でtextareaに値を入れる
□投稿者/ key (8回)-(2011/02/08(Tue) 00:28:48)
No56964 (Azulean さん) に返信
回答有難うございます。
>どうやら、InnerText なるものを設定しないと反映されなさそうに見えますよね。

IHTMLTextAreaElementPtr の値設定を以下のようにInnerTextを設定してみたのですが、やはり表示されません。
IHTMLElementPtrの使い方が間違っているのでしょうか?

MSHTML::IHTMLElementPtr pElement(pInput);
if(pElement){
pElement->innerText = _bstr_t( "ほげ" );
}
IHTMLElementPtr
引用返信 編集キー/
■57012 / inTopicNo.4)  Re[3]: 【C++】IE操作でtextareaに値を入れる
□投稿者/ Azulean (689回)-(2011/02/09(Wed) 00:56:19)
すみません。
平日の時間ではちょっとテストアプリを組めそうにないので試していません。

No56976 (key さん) に返信
> IHTMLTextAreaElementPtr の値設定を以下のようにInnerTextを設定してみたのですが、やはり表示されません。
> IHTMLElementPtrの使い方が間違っているのでしょうか?
>
> MSHTML::IHTMLElementPtr pElement(pInput);
> if(pElement){
> pElement->innerText = _bstr_t( "ほげ" );
> }

pInput ってどういったものを持ってきていますか?
後でほかの人が再現する、調査するためにもここは明らかにしておいて頂きたいと思います。
引用返信 編集キー/
■57054 / inTopicNo.5)  Re[4]: 【C++】IE操作でtextareaに値を入れる
□投稿者/ key (10回)-(2011/02/10(Thu) 00:43:05)
No57012 (Azulean さん) に返信
失礼しました。htmlの形式が間違っておりました。
サイト側のミスで、html方式だったようです。
text方式にしてもらったところ、無事 IHTMLTextAreaElementPtr、IHTMLElementPtr 共に成功しました。
わざわざテストアプリまで考えてもらって申し訳ありません。
IE8だとinnerTextでの遅延もあるようですので、あまり汎用的なメソッドではないかもしれないですね。
資料の少ないライブラリですが、他の人の役に立ってもらえると幸いです。
特にAzuleanさん、重ね重ね返答を有難うございました。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -