这几天写的程序中要用到这方面的东西,写了个很简单的例子.
-
-
#include<atlbase.h>
-
#include"atlconv.h"
-
#include"Mshtml.h"
-
-
-
intCErrKbaseDHtmlView::RefreshPage(MM_FAULTKBASE&refKBaseInfo)
- {
- USES_CONVERSION;
- CComPtr<IHTMLDocument2>pDoc;
- CComPtr<IDispatch>spDisp;
- spDisp=GetHtmlDocument();
- CStringstrHtml="<html><head><title>kcmm_errkbase</title>/
-
<styletype='text/css'><!--/
- body,td,th{font-size:12px;color:#990000;}.style5{color:#000099}/
- --></style></head>/
-
<body><tablewidth='732'height='490'border='1'bordercolor='#999999'bgcolor='#FFFFFF'>/
-
<tr><tdwidth='73'height='28'><spanclass='style5'>故障名称:</td><tdwidth='643'>";
- strHtml+=refKBaseInfo.strFaultName;
-
strHtml+="</td></tr><tr><tdheight='27'><spanclass='style5'>故障类型:</td><td>";
- strHtml+=refKBaseInfo.strFaultType;
-
strHtml+="</td></tr><tr><tdheight='31'><spanclass='style5'>故障级别:</td><td>严重级</td></tr>/
-
<tr><tdheight='31'><spanclass='style5'>影响范围:</td><td>";
- strHtml+=refKBaseInfo.strFaultIncidence;
-
strHtml+="</td></tr><tr><tdheight='62'><spanclass='style5'>故障来源:</td><td>1.运行复杂业务查询;2.病毒</td></tr>/
-
<tr><tdheight='68'><spanclass='style5'>产生原因:</td><td>";
- strHtml+=refKBaseInfo.strFaultReason;
-
strHtml+="</td></tr><tr><tdheight='68'><spanclass='style5'>处理流程:</td><td>关机->重启</td></tr>/
-
<tr><tdheight='80'><spanclass='style5'>处理方法:</td><td>";
- strHtml+=refKBaseInfo.strHandleMethod;
-
strHtml+="</td></tr><tr><tdheight='73'><spanclass='style5'>备注信息:</td><td>略</td></tr>/
-
</table><marqueedirection='up'align='middle'scrolldelay='120'>此知识库仅提供参考信息,并非是最全威信息<br>/
- 如有其他问题,请联系金证工程师<br>联系方式:dyx1024@gmail.com</marquee></body></html>";
- CRectrc;
- GetClientRect(&rc);
- CStringstrIn;
- strIn=strHtml;
- CComQIPtr<IPersistStreamInit>spPersistStream(spDisp);
-
if(spPersistStream==NULL)
-
return0;
-
LPTSTRlpMem=(LPTSTR)::GlobalAlloc(GPTR,strIn.GetLength()+1);
- lstrcpy(lpMem,strIn.GetBuffer(strIn.GetLength()));
- CComPtr<IStream>spStream;
- CreateStreamOnHGlobal(lpMem,TRUE,&spStream);
-
- spPersistStream->InitNew();
- spPersistStream->Load(spStream);
-
return0;
- }
-
-
-
BOOLCErrKbaseDHtmlView::PreTranslateMessage(MSG*pMsg)
- {
-
if(!m_bDisplay)
- {
-
switch(pMsg->message)
- {
-
caseWM_CONTEXTMENU:
-
caseWM_RBUTTONUP:
-
caseWM_RBUTTONDOWN:
-
caseWM_RBUTTONDBLCLK:
-
if(IsWindow(pMsg->hwnd))
- {
-
if(pMsg->wParam==WM_RBUTTONUP)
- {
- GetParent()->SendMessage(WM_CONTEXTMENU,pMsg->wParam,pMsg->lParam);
- }
-
returnTRUE;
- }
- }
- }
-
returnCHtmlView::PreTranslateMessage(pMsg);
- }
分享到:
相关推荐
总的来说,通过`WebBrowser`控件和`IHTMLDocument2`接口,开发者可以实现对网页内容的深度操作,包括获取密码和处理超链接,这对于自动化测试、网页抓取等场景非常有用。但务必遵守相关的隐私政策和法律法规,避免...
接下来,我们需要获取`IID_IHTMLDocument2`对象接口,它代表HTML文档的接口,可以访问和操作HTML元素。这通常在文档加载完成后调用,例如在`OnDocumentComplete`事件中: ```cpp m_spDoc.Release(); spWebBrowser2-...
在这个项目中,IHTMLDocument2接口是关键,它是Internet Explorer ActiveX控件的一部分,用于解析和操作HTML文档。通过这个接口,我们可以访问网页的DOM(Document Object Model),获取HTML元素,遍历页面结构,...
通过学习和分析这个代码,可以更好地理解如何在.NET环境中利用CHtmlView和IHTMLDocument2接口进行自动填表的操作。 总的来说,利用CHtmlView和IHTMLDocument2进行自动填表是一种有效的编程技巧,它可以提高效率,...
当页面加载完毕,该事件会被触发,此时我们可以获取到HTML文档的IHTMLDocument2接口,用于进一步操作。 4. **填写表单数据** 登录通常涉及填写用户名和密码。通过IHTMLDocument2,我们可以找到对应的输入元素...
为了实现JavaScript与C++之间的交互,可以使用`DWebBrowserEvents2`的`DocumentComplete`事件,当网页加载完成后,可以获取到`IHTMLDocument2`接口,然后注册事件处理函数,通过`IHTMLDocument2::execScript`执行...
通过类型转换为`IHTMLDocument2`接口,可以更方便地访问和操作DOM元素。 4. **调用JavaScript函数:** 使用`execScript`方法执行JavaScript代码字符串,这里的代码字符串为`"testx('hello');"`,从而实现了从C#代码...
2. **接口 (Interfaces)**:MSHTML 中的每个对象都支持多个接口,例如 `IHTMLDocument2`、`IHTMLDocument3` 等。这些接口定义了对象可以执行的操作。 3. **文档对象模型 (DOM)**:DOM 是 HTML 和 XML 文档的标准...
创建一个简单的C++项目,引入必要的头文件(如“Shobjidl.h”),然后实例化并初始化IWebBrowser2接口: ```cpp #include #include CoInitialize(NULL); CComPtr<IWebBrowser2> pBrowser; pBrowser....
3. **IHTMLDocument2**:当网页加载完成后,我们可以通过这个接口来访问和操作HTML文档,比如修改元素的属性,或者执行JavaScript代码。 在【压缩包子文件的文件名称列表】中,"MyBrowse"可能代表了我们的源代码...
这可以通过调用TWebBrowser的`Document`属性获取到当前页面的IDispatch接口,进一步转换为IHTMLDocument2接口。然后,我们可以利用`IHTMLDocument2::elementFromPoint`方法,传入鼠标位置的坐标,来获取鼠标下的...
导入后,我们可以使用诸如`IHTMLDocument2`,`IHTMLElement`等接口。 2. **创建HTML解析类**:定义一个新类,例如`TDxHtmlParser`,并在此类中声明对MSHTML接口的引用。这些接口将用于加载HTML文档、遍历DOM树、...
3. **DOM访问**:`CHtmlView`提供了对HTML文档对象模型(DOM)的访问,允许程序通过`IHTMLDocument2`接口获取和修改网页元素。例如,可以使用`GetDocument()`函数获取DOM,然后通过DOM接口查找和操作元素。 4. **...
要获取HTML表格中的数据,首先需要导航到目标网页,然后通过WebBrowser控件的Document属性获取到IHTMLDocument2接口,这个接口提供了对HTML文档的访问。接着,可以通过查找表格(table)元素,进一步找到行(tr)和...
MSHTML提供了一个名为`IHTMLDocument2`的接口,通过这个接口,我们可以访问和操作HTML文档的各种元素,包括获取源代码。以下是一个简单的步骤概述: 1. **检测运行中的IE实例**: 使用`EnumWindows`函数枚举所有...
2. **定位表单元素**:通过`WebBrowser`控件提供的接口来定位表单中的各个元素(如输入框、按钮等)。 3. **填充表单数据**:对定位到的表单元素进行数据填充。 4. **提交表单**:模拟用户点击提交按钮的动作,完成...
- `CHtmlCtrl`:通过`IHTMLDocument2`接口直接操作HTML文档,可以实现更精细的控制,如动态修改内容、执行JavaScript。 2. 控制能力: - `webbrowser`控件:提供基本的导航和事件响应,如前进、后退、刷新等,但...
6. **样式的支持**:通过使用IHTMLDocument2接口,我们可以获取HTML文档的DOM树,并对元素进行操作,如改变字体、颜色等。 7. **编译与调试**:根据项目使用的Visual Studio版本(例如vs6、vs2005),创建或更新...
4. **提取纯文本**:编写一个函数,如`ExtractPlainTextFromWebBrowser`,用于从IHTMLDocument2接口提取文本。以下是一个简单的示例: ```delphi procedure ExtractPlainTextFromWebBrowser(const Doc: ...
3. **编程接口(IHTMLDocument2等)**:mshtml提供了一系列接口,如IHTMLDocument2、IHTMLElement等,这些接口允许开发者创建、修改和控制HTML文档。通过COM(Component Object Model)或.NET Framework的System....