掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
COMインターフェイスを使用してのHTMLドキュメントの取得 (ID:57066)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
たびたび質問させていただいています。 今回、別プロセスのIEからHTMLドキュメントを取得するプログラムを作成しています。IHTMLDocument2のGetbodyメソッドを使用して、bodyダグ内のドキュメントは取得できます。これを全部のHTMLドキュメントを取得するプログラムを作成しましたが、ホームページの場所によりエラーがでてしまします。エラー内容は以下の通りです。「0x0042d4d0 でハンドルされていない例外が発生しました : 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。」 strlen.asmのmain_loop: mov eax,dword ptr [ecx] ; read 4 bytes でエラーが発生しているようです。 以下に私が作成したソースを掲載します。よろしくご教授ください。 #include "stdafx.h" #include <iostream> #include "ATLBASE.H" #include "objbase.h" using namespace std; #import "C:\WINDOWS\system32\mshtml.tlb" rename_namespace("CLASS2") named_guids #import "C:\WINDOWS\system32\shdocvw.dll" no_namespace named_guids int _tmain(int argc, _TCHAR* argv[]) { long nIndex; long nMax; HRESULT sc; sc = ::CoInitialize(NULL); CLASS2::IHTMLDocument2Ptr document; CLASS2::IHTMLElementPtr body; CLASS2::IHTMLElementPtr pElement; CLASS2::IHTMLElementCollectionPtr pCol; IShellWindowsPtr pShellWindows; pShellWindows.CreateInstance(__uuidof(ShellWindows)); _variant_t aaa("<HTML>"); IDispatchPtr spDisp; nMax = pShellWindows->GetCount(); for (nIndex = 0; nIndex < nMax; nIndex++) { _variant_t va(nIndex, VT_I4); spDisp = pShellWindows->Item(va); IWebBrowser2Ptr spBrowser(spDisp); if (spBrowser != NULL) { cout << (LPCTSTR)spBrowser->GetLocationURL()<<"\n\n"; document=spBrowser->GetDocument(); //body=document->Getbody(); pCol=document->Getall(); //cout <<body->GetouterHTML()<<"\n\n"; //all の内容をリストアップ USES_CONVERSION ; CComVariant vintName(0) ; CComVariant vintIndex(0) ; IDispatchPtr pdsp2 ; pdsp2=pCol->item(vintName, vintIndex) ; pElement = pdsp2; cout <<pElement->GetouterHTML()<<"\n\n"; } } Sleep(5000); return 0; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.