如何获取在TWebBrowser中打开的网页中TEXT的事件 就是当网页在TWEBBROWSER中打开后,如何接收TEXT的事件自己处理。希望给出例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Handling HTML Element Eventshttp://msdn.microsoft.com/workshop/browser/mshtml/tutorials/sink.aspThe Code Project - Handling HTML Element Events in MFCwww.codeproject.com/shell/dlgdhtmlevents.asp 在 OnDocumentComplete中處理相關 Documents 就可取得 text http://www.hoyoco.net/soft/delphil/communication/66.htmWebBrowser流程讲解及如何判断下载网页成功某资料上说,onnavigatecomplete2事件只在下载成功时才会触发,可我反复试验发现不管成功与否它都会触发。怎样判断是否下载成功呢?急!!!procedure tfrmie2.webdocumentcomplete(sender: tobject; pdisp: idispatch;var url: olevariant);beginif not(web.busy) then beginshowmessage('下载完毕');end;end;对于每次连接(不论是鼠标点击还是用navigate2方法连接)twebbrowser的流程是这样的:onbeforenavigate2 <--开始链接时会触发此事件onnavigatecomplete2 <--成功的链接到此网页(以后才会有下面的事件)ondownloadbegin <--开始下载ondownloadcomplete <--下载结束ondocumentcomplete <--页面下载完毕对于每个html页面顺序都是如此.如果是frame或iframe的文件都会当成html页面处理.也就是说如果一个页面中有3个iframe那么总共会触发4次beforenavigate2事件.对于每个连接且需要显示出来的二进制文件(如*.gif*.bmp*.jpg...)都会触发一个downloadbegin和downloadcomplete事件. http://www.csdn.net/develop/read_article.asp?id=18465DHTML 对象模型的有效性DHTML 对象模型 用于访问和操作HTML页面的内容,并且在页面装载之前不可用。你的应用程序通过处理WebBrowser 控件的DWebBrowserEvents2::DocumentComplete事件来判断一个页面是否被装载了。 这个事件可能被页面中的每个框架触发,并且在顶层文档载入完成时再触发一次。你可以通过比较事件传递的IDispatch 接口指针和WebBrowser 控件来判断DWebBrowserEvents2::DocumentComplete 事件是否是顶层框架的。这个WebBrowser DWebBrowserEvents2::DocumentComplete 事件的示例处理代码演示如何判断事件是否是顶层框架的, (如果是,)这指明HTML页面载入完成. 本示例也演示如何从一个内存块——在这个场合是一个包含需要显示的HTML内容的字符串——创建流。void myObject::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL){ HRESULT hr; IUnknown* pUnkBrowser = NULL; IUnknown* pUnkDisp = NULL; IStream* pStream = NULL; HGLOBAL hHTMLText; static TCHAR szHTMLText[] = "<html><h1>流测试</h1><p>本HTML内容已经从流中加载。</html>"; // 这个 DocumentComplete 事件是否是顶层框架窗口的? // 检查 COM 标识: 比较IUnknown 接口指针. hr = m_pBrowser->QueryInterface( IID_IUnknown, (void**)&pUnkBrowser ); if ( SUCCEEDED(hr) ) { hr = pDisp->QueryInterface( IID_IUnknown, (void**)&pUnkDisp ); if ( SUCCEEDED(hr) ) { if ( pUnkBrowser == pUnkDisp ) { // 这是顶层框架窗口的DocumentComplete 事件 —— 页面 载入完成! // 建立一个包含HTML内容的流 // 另外, 这个流可以是被传递过来的(而不是被创建的) size_t = cchLength; // TODO: 安全地判断 szHTMLText的长度,单位是TCHAR. hHTMLText = GlobalAlloc( GPTR, cchLength+1 ); if ( hHTMLText ) { size_t cchMax = 256; StringCchCopy((TCHAR*)hHTMLText, cchMax + 1, szHTMLText); // TODO: 在这里加入错误处理代码。 hr = CreateStreamOnHGlobal( hHTMLText, TRUE, &pStream ); if ( SUCCEEDED(hr) ) { // 调用辅助函数让网络浏览器加载流。 LoadWebBrowserFromStream( m_pBrowser, pStream ); pStream->Release(); } GlobalFree( hHTMLText ); } } pUnkDisp->Release(); } pUnkBrowser->Release(); }} 求个关于显示统计信息的小方案,好像很容易的! GroupBox问题 §§§一个关于数据库与树形目录的问题§§§ 使用access的优点thanks all,bow 一个以时间段作为查询条件的问题?(在线等待) 请问DELPHI和BCB的差别(非语言区别) 救命啊!sos..sos.. 我快不行拉! 老千,老鱼,来看看,关于SQL语句的参数传递.......................... 如何改变Tcombobox的下拉长度? 请教一个有关数据库问题! system.exit和exit有什么区别? 如何在DBGrid中加入序号,我用的是Oracle, ADO
http://msdn.microsoft.com/workshop/browser/mshtml/tutorials/sink.asp
The Code Project - Handling HTML Element Events in MFC
www.codeproject.com/shell/dlgdhtmlevents.asp
中處理
相關 Documents 就可取得 text
某资料上说,onnavigatecomplete2事件只在下载成功时才会触发,可我反复试验发现不管成功与否它都会触发。怎样判断是否下载成功呢?急!!!procedure tfrmie2.webdocumentcomplete(sender: tobject; pdisp: idispatch;var url: olevariant);beginif not(web.busy) then beginshowmessage('下载完毕');end;end;对于每次连接(不论是鼠标点击还是用navigate2方法连接)twebbrowser的流程是这样的:
onbeforenavigate2 <--开始链接时会触发此事件onnavigatecomplete2 <--成功的链接到此网页(以后才会有下面的事件)ondownloadbegin <--开始下载ondownloadcomplete <--下载结束ondocumentcomplete <--页面下载完毕
对于每个html页面顺序都是如此.如果是frame或iframe的文件都会当成html页面处理.也就是说如果一个页面中有3个iframe那么总共会触发4次beforenavigate2事件.
对于每个连接且需要显示出来的二进制文件(如*.gif*.bmp*.jpg...)都会触发一个downloadbegin和downloadcomplete事件.
DHTML 对象模型的有效性
DHTML 对象模型 用于访问和操作HTML页面的内容,并且在页面装载之前不可用。你的应用程序通过处理WebBrowser 控件的DWebBrowserEvents2::DocumentComplete事件来判断一个页面是否被装载了。 这个事件可能被页面中的每个框架触发,并且在顶层文档载入完成时再触发一次。你可以通过比较事件传递的IDispatch 接口指针和WebBrowser 控件来判断DWebBrowserEvents2::DocumentComplete 事件是否是顶层框架的。这个WebBrowser DWebBrowserEvents2::DocumentComplete 事件的示例处理代码演示如何判断事件是否是顶层框架的, (如果是,)这指明HTML页面载入完成. 本示例也演示如何从一个内存块——在这个场合是一个包含需要显示的HTML内容的字符串——创建流。void myObject::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
HRESULT hr;
IUnknown* pUnkBrowser = NULL;
IUnknown* pUnkDisp = NULL;
IStream* pStream = NULL;
HGLOBAL hHTMLText;
static TCHAR szHTMLText[] = "<html><h1>流测试</h1><p>本HTML内容已经从流中加载。</html>";
// 这个 DocumentComplete 事件是否是顶层框架窗口的?
// 检查 COM 标识: 比较IUnknown 接口指针.
hr = m_pBrowser->QueryInterface( IID_IUnknown, (void**)&pUnkBrowser );
if ( SUCCEEDED(hr) )
{
hr = pDisp->QueryInterface( IID_IUnknown, (void**)&pUnkDisp );
if ( SUCCEEDED(hr) )
{
if ( pUnkBrowser == pUnkDisp )
{ // 这是顶层框架窗口的DocumentComplete 事件 —— 页面 载入完成!
// 建立一个包含HTML内容的流
// 另外, 这个流可以是被传递过来的(而不是被创建的)
size_t = cchLength;
// TODO: 安全地判断 szHTMLText的长度,单位是TCHAR.
hHTMLText = GlobalAlloc( GPTR, cchLength+1 );
if ( hHTMLText )
{
size_t cchMax = 256;
StringCchCopy((TCHAR*)hHTMLText, cchMax + 1, szHTMLText);
// TODO: 在这里加入错误处理代码。
hr = CreateStreamOnHGlobal( hHTMLText, TRUE, &pStream );
if ( SUCCEEDED(hr) )
{
// 调用辅助函数让网络浏览器加载流。
LoadWebBrowserFromStream( m_pBrowser, pStream );
pStream->Release();
}
GlobalFree( hHTMLText );
}
}
pUnkDisp->Release();
}
pUnkBrowser->Release();
}
}