Internet Explorer_Server内容获取 使用vc怎么实现呀?我整了好久没弄出来 谢谢了我有更好的答案
按默认排序|按时间排序
1条回答
首先这里假设你已经获取到Internet Explorer_Server窗口的句柄,假设为hwndIE:HWND。 CoInitialize(NULL); CComPtr<IHTMLDocument2> pDoc2; string strTemp=""; HINSTANCE hinst=::LoadLibrary("OLEACC.DLL"); if(hinst!=NULL) { LRESULT lres; UINT unMsg=::RegisterWindowMessage(_T("WM_HTML_GETOBJECT")); ::SendMessageTimeout(hwndIE,unMsg,0L,0L,SMTO_ABORTIFHUNG,1000,(DWORD*)&lres); LPFNOBJECTFROMLRESULT pfObjectFromLresult=(LPFNOBJECTFROMLRESULT)::GetProcAddress(hinst,_T("ObjectFromLresult")); if(pfObjectFromLresult!=NULL) { HRESULT hres; hres=(*pfObjectFromLresult)(lres,IID_IHTMLDocument2,0,(void**)&pDoc2); if(SUCCEEDED(hres)) { CComPtr<IHTMLElement> pHtmlElem; hres=pDoc2->get_body(&pHtmlElem); BSTR bstrText=NULL; pHtmlElem->get_innerText(&bstrText); _bstr_t _bstrTemp(bstrText,false); //strTemp=(char*)_bstr_t(bstrText); strTemp=(char*)_bstrTemp; } } ::FreeLibrary(hinst); } CoUninitialize(); CoInitialize(NULL); CComPtr<IHTMLDocument2> pDoc2; string strTemp=""; HINSTANCE hinst=::LoadLibrary("OLEACC.DLL"); if(hinst!=NULL) { LRESULT lres; UINT unMsg=::RegisterWindowMessage(_T("WM_HTML_GETOBJECT")); ::SendMessageTimeout(hwndIE,unMsg,0L,0L,SMTO_ABORTIFHUNG,1000,(DWORD*)&lres); LPFNOBJECTFROMLRESULT pfObjectFromLresult=(LPFNOBJECTFROMLRESULT)::GetProcAddress(hinst,_T("ObjectFromLresult")); if(pfObjectFromLresult!=NULL) { HRESULT hres; hres=(*pfObjectFromLresult)(lres,IID_IHTMLDocument2,0,(void**)&pDoc2); if(SUCCEEDED(hres)) { CComPtr<IHTMLElement> pHtmlElem; hres=pDoc2->get_body(&pHtmlElem); BSTR bstrText=NULL; pHtmlElem->get_innerText(&bstrText); _bstr_t _bstrTemp(bstrText,false); //strTemp=(char*)_bstr_t(bstrText); strTemp=(char*)_bstrTemp; } } ::FreeLibrary(hinst); } CoUninitialize(); 好了,现在strTemp中已经包含了Internet Explorer_Server窗口的内容了。 对了,记得包含头文件: [cpp] view plaincopyprint?#include <mshtml.h> #include <atlbase.h> #include <oleacc.h> #include <string> #include <comdef.h> using std::string;
评论