掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WebBrowser画面の選択部分のソースの取得は? (ID:19484)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
// 上のURLずれてた。正しくは、 // エレメント階層を調べる // http://www.microsoft.com/japan/msdn/library/ja/jpisdk/dhtml/doc_object/scripting_elements_collections.asp // おまけ procedure TForm1.Button4Click(Sender: TObject); var I,J,K,L: Integer; xDepth: Integer; xMsg: String; xDocument: IHTMLDocument2; xAll: IHTMLElementCollection; xElementBefore: IHTMLElement; xElement: IHTMLElement; xElementBeforeParent: IHTMLElement; xNode: TTreeNode; begin Form2.Visible := True; Form2.TreeView1.Items.Clear; // Tree xNode := Form2.TreeView1.Items.AddChild(nil, 'root'); // Tree xDepth := 0; L := 1; xDocument := ie.ieObject.Document as IHTMLDocument2; xAll := xDocument.all as IHTMLElementCollection; //xMsg := (xAll.item(0, varEmpty) as IHTMLElement).tagName; Form2.TreeView1.Items.BeginUpdate; // Tree for I := 0 to (xAll.length-1) do begin xElement := xAll.item(I, varEmpty) as IHTMLElement; // I = 0 は特別扱い if I > 0 then begin xElementBefore := xAll.item(I-1, varEmpty) as IHTMLElement; xElementBeforeParent := xElementBefore.parentElement; // 1つ前のエレメントが現在のエレメントを含んでいる場合 if xElementBefore.contains( xElement ) then begin // 階層をひとつ下げる xDepth := xDepth +1; L := 1; // end else // 現在のエレメントを含んでいない場合 begin // 現在のエレメントを含む親(xElementBeforeParent)が現れるまで、1つ前のエレメントの親から順番に階層を上げていく for J := xDepth downto 1 do begin xNode := xNode.Parent; // Tree if (I = xAll.length) or (xElementBeforeParent.contains( xElement )) then begin L := L +1; Break; end; xElementBeforeParent := xElementBeforeParent.parentElement; end; xDepth := J; end; xMsg := xMsg + #13#10; for K := 1 to xDepth do begin xMsg := xMsg + '━'; end; xMsg := xMsg + IntToStr(I) + '-' + IntToStr(xDepth) + '-' + IntToStr(L) + ' '; end; xMsg := xMsg + xElement.tagName + ':' + Copy(xElement.innerText, 1, 128); // 文字列が長い場合カット //////////////////////// // Tree xNode := Form2.TreeView1.Items.AddChild(xNode, xElement.tagName); // いろいろ属性表示 if xElement.innerText <> '' then Form2.TreeView1.Items.AddChild(xNode, '[ innerText ]' + Copy(xElement.innerText, 1, 128) ); if xElement.outerHTML <> '' then Form2.TreeView1.Items.AddChild(xNode, '[ outerHTML ]' + Copy(xElement.outerHTML, 1, 128) ); if xElement.id <> '' then Form2.TreeView1.Items.AddChild(xNode, '[ id ]' + Copy(xElement.id, 1, 128) ); if xElement.className <> '' then Form2.TreeView1.Items.AddChild(xNode, '[ className ]' + Copy(xElement.className, 1, 128) ); Form2.StatusBar1.SimpleText := ' ' + IntToStr( Round( I / (xAll.length-1) * 100 ) ) + ' %'; //////////////////////// end; // ツリーを展開 for K := 0 to (Form2.TreeView1.Items.Count -1) do begin Form2.TreeView1.Items.Item[K].Expand(False); end; Form2.TreeView1.Items.EndUpdate; // Tree Memo1.Lines.Add(xMsg); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.