WEB开发网
开发学院软件开发VC DOM应用---遍历网页中的元素 阅读

DOM应用---遍历网页中的元素

 2006-07-22 22:56:47 来源:WEB开发网   
核心提示: #include < atlbase.h >#include < mshtml.h >#include < oleacc.h >#pragma comment ( lib, "oleacc" )BOOL CALLBACK EnumCh

#include < atlbase.h >
#include < mshtml.h >
#include < oleacc.h >
#pragma comment ( lib, "oleacc" )
BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
  TCHAR szClassName[100];
  ::GetClassName( hwnd, &szClassName, sizeof(szClassName) );
  if ( _tcscmp( szClassName, _T("Internet Explorer_Server") ) == 0 )
  {
    *(HWND*)lParam = hwnd;
    return FALSE;    // 找到第一个 IE 控件的子窗口就停止
  }
  else  return TRUE;    // 继续枚举子窗口
};
void FindFromHwnd(HWND hWnd)
{
  HWND hWndChild=NULL;
  ::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&hWndChild );
  if(NULL == hWndChild)  return;
  UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
  LRESULT lRes;
  ::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*) &lRes );
  CComPtr < IHTMLDocument2 > spDoc;
  HRESULT hr = ::ObjectFromLresult ( lRes, IID_IHTMLDocument2, 0 , (LPVOID *) &spDoc );
  if ( FAILED ( hr ) )  return;
  // 程序运行到此,已经找到了 IHTMLDocument2 的接口指针
}
<2> 得到了 IHTMLDocument2 接口指针后,如果网页是单贞的,那么转第<4>步骤。如果是多贞(有子框架)则还需要遍历所有的子框架。这些子框架(IHTMLWindow2),被保存在集合中(IHTMLFramesCollection2),取得集合指针的方法比较简单,取属性 IHTMLDocument2::get_frames()。

上一页  1 2 3 4  下一页

Tags:DOM 应用 遍历

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接