获取其它进程中的Web Browser中的HTML源码

本文介绍了一种通过Windows API函数FindWindow和FindWindowEx定位Internet Explorer窗口,并使用注册消息和COM接口从IE中提取HTML源代码的方法。该方法适用于需要抓取网页内容的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HWND H1,H2,H3,H4,hw;
 H1=H2=H3=H4=hw=NULL;
 H1=::FindWindow("TForm1",NULL);
 if (H1) H2=::FindWindowEx(H1,NULL,"Shell Embedding",NULL);
 if (H2) H3=::FindWindowEx(H2,NULL,"Shell DocObject View",NULL);
 if (H3) H4=::FindWindowEx(H3,NULL,"Internet Explorer_Server",NULL);

 if (H4) hw=H4;
 else
 {
  AfxMessageBox("No Found the Dialog with IE!");
  return;
 }

 IHTMLDocument2 *pHTMLDocument=NULL;
 DWORD lRes;
 HRESULT hres;

 UINT MSG = RegisterWindowMessage("WM_HTML_GETOBJECT");
 SendMessageTimeout(hw, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, &lRes);

 hres=ObjectFromLresult(lRes,__uuidof(IHTMLDocument2),0,(void**)&pHTMLDocument);

 if(hres==S_OK) 
 {
  IPersistStreamInit *pPSI=NULL;
  IStream *pStream=NULL; 
  HGLOBAL  hHTMLText; 
    
  if  (FAILED(pHTMLDocument->QueryInterface(&pPSI))) return;
   
  hHTMLText = GlobalAlloc(GMEM_FIXED, 65534);
  CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream); 
  pPSI->Save(pStream, FALSE);

  char *pText = (char*)hHTMLText;
  FILE *f=fopen("data_from_explorer.txt","w");
  fwrite(pText,1,strlen(pText),f);
  fclose(f);
  AfxMessageBox("the source codes Saved in data_from_explorer.txt");

  pStream->Release();
  pPSI->Release();
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值