Delphiの話。
色々あって起動中のブラウザで表示中の画面を横取りして、formの項目をfillinしてPOSTしないといけない要件がある。まずはWindowハンドルを元にして、起動中のIEのIWebBrowser2インタフェイスを取得する方法。
function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var
hInst: HWND;
lRes: Cardinal;
Msg: Integer;
pDoc: IHTMLDocument2;
ObjectFromLresult: TObjectFromLresult;
begin
hInst := LoadLibrary('Oleacc.dll');
@ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult');
if @ObjectFromLresult <> nil then
begin
try
Msg := RegisterWindowMessage('WM_HTML_GETOBJECT');
SendMessageTimeOut(WHandle, Msg, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
if Result = S_OK then
(pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp,
IWebbrowser2, IE);
finally
FreeLibrary(hInst);
end;
end;
end;
これでIWebBrowser2のインタフェイスが取得できれば、文書の操作は簡単。
doc := IE.Document as IHtmlDocument2;
ShowMessage(doc.body.innerHTML);
ブラウザからIHtmlDocument2インタフェイスを取得し、それを通じてhtmlの本体にアクセスできる。
関連コンテンツ
このエントリは参考になりましたか?
よろしければ5段階評価で該当する☆をクリックしてください。

Loading ...
“起動中のIEのIWebBrowser2インタフェイスを外部から取得する”へのコメントはありません。
Posting your comment.
コメントする
Trackback