- PR -

【C++】C++を使用したHTMLの操作について

1
投稿者投稿内容
ベジータ
会議室デビュー日: 2007/10/29
投稿数: 14
投稿日時: 2008-09-06 11:27
C++初心者です。

現在、IEコンポーネントを利用し、以下のようなプログラムを作成したいと考えています。
1.IEを起動する。
2.起動したIEを探す
3.IEの<BODY>タグの<style>を取得する。
4.<style>を書き換える(overflow-xとyを書き換えるのが目的です)
※そもそも、BODYが書き換えられるのかどうかなのですが・・・・

1と2はサンプルプログラムを探し既に出来ていますが、
3の<BODY>タグの<style>取得の部分で<BODY>タグ全体の取得しか出来ておりません。
そもそも<style>出来るかということと、取得方法及び書き換え方法を
ご教授いただけませんでしょうか。

//HTML操作
void GoogleSearch(SHDocVw::IWebBrowser2Ptr pIE)
{

//HTMLドキュメント取得
MSHTML::IHTMLDocument2Ptr pDoc = pIE->GetDocument();
if (pDoc == NULL) return;

  //Bodyの取得
MSHTML::IHTMLElementPtr pBody = pDoc->body; //Bodyのオブジェクトの取得
 _bstr_t bstr_buf = pBody->outerHTML;
  MessageBox(NULL,bstr_buf,TEXT("body"),MB_OK);
}
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-09-06 23:33
引用:

ベジータさんの書き込み (2008-09-06 11:27) より:
そもそも<style>出来るかということと、取得方法及び書き換え方法を
ご教授いただけませんでしょうか。


できると思います。

MSHTML 関連のクラス名などで検索すると、たとえばですが、
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=mshtml+IHTMLElement+style
だと先頭に、
http://katamari.jp/index.php?dev%2Fvb%2FWeb%A5%DA%A1%BC%A5%B8%A4%F2%B2%E8%C1%FC%A4%C7%BC%E8%C6%C0%A1%CAOleDraw%A1%CB
がヒットしました。
ここを見るとできそうに思います。

なお、C++ は(利用者数という点から見れば)マイナーだと思いますので、C++ だけで絞り込むとほとんど見つからないだろうと思いますので、VB や C#/VB.NET で書かれたサイトを見つけて、C++ に変換するほうが良いでしょう。(それか自分でも VB や C#/VB.NET を使うという手もあります。)
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-09-07 00:05
(VB.NET ではなく) VB でやってみました。(正確には Excel xp(2002) の VBA + IE 7 + Windows XP)

コード:
Option Explicit

Private Sub CommandButton1_Click()
    WebBrowser1.Navigate ("http://www.example.com/")
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Dim d As MSHTML.HTMLDocument
    Set d = WebBrowser1.Document
    d.body.Style.overflow = "hidden" ' (1)
    Call d.body.Style.setAttribute("overflow", "hidden") ' (2)
    Call d.body.Style.setAttribute("overflow-x", "hidden") ' (3)
End Sub



(1) や (2) のいずれかひとつをやれば overflow は制御できるみたいでした。ただし(3) のように overflow-x を設定しようとしてもなぜか効きません(overflow-y も同様でした)。私にはこれ以上分かりませんが、ご参考まで。
1

スキルアップ/キャリアアップ(JOB@IT)