• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 如何让atlactivex获得网页的内容?在线等待,来者有分!

如何让atlactivex获得网页的内容?在线等待,来者有分!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了前不见古人后不见来者,来者不善,前无古人后无来者,来者犹可追,知来者之可追等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何让 atl activex 获得网页的内容?在线等待,来者有分!
描述:

如何让 atl activex 获得网页的内容?在线等待,来者有分!
有选择的获得网页的内容,有那些方法?
给点提示、资料。


解决方案1:

CAtlHttpClient
CAtlNavigateData 
如果你想找出具体的文本,可以对 m_HtmlPageCode进行分析,

解决方案2:

给你一段代码看看吧
CoInitialize( NULL );
1.  HWND hwnd = HWND GetActiveInputHandle();
2.  IHTMLDocument2* pDoc2 = GetDocInterface(hwnd) ;
3.  将网页中textbox的name是controlname的内容提取出来
    CString s = PageName(GetDocInterface(hwnd),textboxname);
CoUninitialize();
// 获得当前系统的输入焦点
HWND GetActiveInputHandle()
{
HWND winHld, focusld;
DWORD threadID;
winHld = GetForegroundWindow();
threadID = GetWindowThreadProcessId(winHld, 0);
AttachThreadInput(GetCurrentThreadId(), threadID, TRUE);
focusld = GetFocus();
AttachThreadInput(GetCurrentThreadId(), threadID, FALSE);
return focusld;
}
IHTMLDocument2* GetDocInterface(HWND hWnd) 
{
// 我们需要显示地装载OLEACC.DLL,这样我们才知道有没有安装MSAA
HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );
IHTMLDocument2* pDoc2=NULL;
if ( hInst != NULL ){
if ( hWnd != NULL ){
CComPtr<IHTMLDocument> spDoc=NULL;
LRESULT lRes;
UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
::SendMessageTimeout( hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
if ( pfObjectFromLresult != NULL ){
HRESULT hr;
hr=pfObjectFromLresult(lRes,IID_IHTMLDocument,0,(void**)&spDoc);
if ( SUCCEEDED(hr) ){
CComPtr<IDispatch> spDisp;
CComQIPtr<IHTMLWindow2> spWin;
spDoc->get_Script( &spDisp );
spWin = spDisp;
spWin->get_document( &pDoc2 );
}
}
}
::FreeLibrary(hInst);
} 
else{//如果没有安装MSAA
AfxMessageBox(_T("请您安装Microsoft Active Accessibility"));
}
return pDoc2;
} 
CString PageName(IHTMLDocument2 *pDoc2 , char* controlname)
{
//-------------------------------------
if(pDoc2==NULL)
return "";
//声明一个IHTMLElement接口指针
CComPtr<IHTMLElement> pElement;
CComPtr<IHTMLElementCollection> pElementCollection;
IDispatch * Idisp;
IHTMLInputTextElement *  input;
CComBSTR type;
CComBSTR name;
CString  pwname = "";
HRESULT hr=pDoc2->get_all(&pElementCollection);
long n;
pElementCollection->get_length(&n);
for(long i=0;i<n;i++)
{
_variant_t d = i;
hr = pElementCollection->item(d,d,&Idisp);
if(SUCCEEDED(hr))
{
hr = Idisp->QueryInterface(IID_IHTMLInputTextElement,(void**)&input);
if(SUCCEEDED(hr))
{
hr = input->get_name(&name);
if(SUCCEEDED(hr))
{
if(name==controlname)
{
CComBSTR ppw;
input->get_value(&ppw);
pwname = ppw;
}
}
}
}
}
pDoc2->Release();
return pwname;
}

解决方案3:

up

解决方案4:

CAtlHttpClient client;
    CAtlNavigateData navData;
    char* m_HtmlPageCode = 0; 
    if(client.Navigate(_T(http://www.163.com"),&navData))
    {
        char* head = 0;
        if (client.GetStatus() == 200) //  200 = successful HTTP transaction 
        {
            m_HtmlPageCode = new char[client.GetBodyLength()+1];
            memcpy(m_HtmlPageCode, client.GetBody(),client.GetBodyLength());
            m_HtmlPageCode[client.GetBodyLength()] = 0;
            delete [] head;
         }
    }
m_HtmlPageCode//最有网页源码字符串
我也在做此类项目,共同学习

解决方案5:

我做的一个例子是把信息放到textbox框,通过DCOM获得

解决方案6:

我建议你用winInet来写
CString CWebSite::GetWebPage(const CString& Url,bool &bSuccess)
{
HINTERNET hHttpFile;
char szSizeBuffer[32];
DWORD dwLengthSizeBuffer = sizeof(szSizeBuffer); 
DWORD dwFileSize;
DWORD dwBytesRead;
BOOL bSuccessful;
CString Contents;
// Setting default error message
Contents = m_ErrorMessage;
// Opening the Url and getting a Handle for HTTP file
hHttpFile = InternetOpenUrl(m_Session, (const char *) Url, NULL, 0, 0, 0);
if (hHttpFile)
{ 
// Getting the size of HTTP Files
BOOL bQuery = ::HttpQueryInfo(hHttpFile,HTTP_QUERY_CONTENT_LENGTH, szSizeBuffer, &dwLengthSizeBuffer, NULL) ;
if(bQuery==TRUE)
{ 
// Allocating the memory space for HTTP file contents
dwFileSize=atol(szSizeBuffer);
LPSTR szContents = Contents.GetBuffer(dwFileSize);
// Read the HTTP file 
BOOL bRead = ::InternetReadFile(hHttpFile, szContents, dwFileSize, &dwBytesRead); 
//Should add exception catch 
if (bRead) 
{
bSuccessful = TRUE;
bSuccess = TRUE;
}
::InternetCloseHandle(hHttpFile); // Close the connection.
}
}
else
{
// Connection failed.
bSuccessful = FALSE;
bSuccess = FALSE;
} 
return Contents;
}
一个简单的例子,自己参考一下,查查资料就能搞定

解决方案7:

http://www.vckbase.com/code/

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • encodersdk90的问题,来者有分
  • 高手进!!!!!!!!!来者有分!!
  • 控件导入后简单问题,来者有分
  • jameshooo请进[来者都有分哈]
  • 进程之间互相传递消息?来者有分!!!
  • 请问怎么样在线程里响应事件,来者给分
  • 常规DLL中如何建立消息循环??来者不据,UP有分!!!
  • 简单问题,来者有分!(在线!急)
  • 如何做能够被其他语言调用的DLL,来者有分!
  • 这样的程序有内存泄漏,你信吗?????来者有分!

相关文章

  • 2017-06-05 MFCGetWindowRect问题
  • 2017-06-04 急:怎样创建自己的richedit控件(activex)?
  • 2017-06-05 很简单的问题,但我不会。
  • 2017-06-04 BSTR在使用过程中为什么会内存泄露呢?
  • 2017-06-04 如何调用DLL
  • 2017-06-04 用ATL写一个客户端的登陆程序应该怎么入手啊?
  • 2017-06-04 发布treeview控件的奇怪问题
  • 2017-06-05 HOOK拦截消息的问题!!!
  • 2017-06-04 COleDataSource::DoDragDrop符号无法解析问题(紧急求助)
  • 2017-06-04 如何用IRichEditOleCallback界面load一个图文并茂的rtf文件?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • VCODBC更新数据表的问题:
    • 怎样编类似ADO这样的库函数?
    • 线程中调用主窗口接口函数出异常错误!!!(在线等待)
    • 关于ActiveX控件使用
    • 如何让vb中看到的控件属性可以选择文件?
    • ActiveX控件的事件,能不能有输出参数?javascript/vbscript如何响应事件并设置参数?
    • 请高手回答一下ATL中高难度的调试问题
    • 如何让进程无法被终止?
    • 串口响应问题
    • 如何让activex控件装入一个主程序指定的位图

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有