从 IHTMLDocument2 获得/写入 HTML 文本 (IPersistStreamInit)

森林冰火人html源码,森林冰火人单人版(源码) 【实例简介】java小游戏——森林冰火人,单人游戏, 实现人物行走,跳跃,吃水晶,具有计时功能,积分功能,倒计时结束游戏失败。【实例截图】【核心代码】森林冰火人单人版├── bin│ ├── game│ │ ├── Help.class│ │ ├── Logon.class│ │ ├── Main.class│ │ ├── Mykey.class│ │ ... 阅读详情
 
从 IHTMLDocument2 获得/写入 HTML 文本 (IPersistStreamInit)

void CUxHtmlViewerView::SetScript(LPCTSTR lpszTxt)
{
    Navigate(_T("about:blank"),NULL,NULL,NULL,NULL);
    HRESULT hr = E_NOINTERFACE;
    CComPtr<IHTMLDocument2> spHTMLDocument = static_cast<IHTMLDocument2*>(this->GetHtmlDocument());
    CStreamOnCString stream(lpszTxt);

    CComQIPtr<IPersistStreamInit> spPSI;

    if (spHTMLDocument)
    {
        spPSI = spHTMLDocument;
        if (spPSI)
            hr = spPSI->Load(static_cast<IStream*>(&stream));
    }
}

/////////////////////////////////////////////////////////////////////////////
// CHtmlView operations

BOOL CHtmlView::GetSource(CString& refString)
{
    BOOL bRetVal = FALSE;
    CComPtr<IDispatch> spDisp = GetHtmlDocument();

    if (spDisp != NULL)
    {
        HGLOBAL hMemory;
        hMemory = GlobalAlloc(GMEM_MOVEABLE, 0);
        if (hMemory != NULL)
        {
            CComQIPtr<IPersistStreamInit> spPersistStream = spDisp;
            if (spPersistStream != NULL)
            {
                CComPtr<IStream> spStream;
                if (SUCCEEDED(CreateStreamOnHGlobal(hMemory, TRUE, &spStream)))
                {
                    spPersistStream->Save(spStream, FALSE);

                    LPCTSTR pstr = (LPCTSTR) GlobalLock(hMemory);
                    if (pstr != NULL)
                    {
                        // Stream is always ANSI, but CString
                        // assignment operator will convert implicitly.

                        bRetVal = TRUE;
                        TRY
                        {                        
                            refString = pstr;
                        }
                        CATCH_ALL(e)
                        {
                            bRetVal = FALSE;
                            DELETE_EXCEPTION(e);
                        }
                        END_CATCH_ALL

                        if(bRetVal == FALSE)
                            GlobalFree(hMemory);
                        else
                            GlobalUnlock(hMemory);
                    }
                }
            }
        }
    }
    
    return bRetVal;
}


向 IHTMLDocument2  写入 HTML 文本


int CChildView::HqResize(void)
{
 USES_CONVERSION;
 CComPtr<IHTMLDocument2> pDoc;

 CComPtr<IHTMLElementCollection> sphtmlAll;
 CComPtr<IHTMLScriptElement> spObject;
 CComPtr<IDispatch> spDisp;
 CComVariant varName;
 CComVariant varIndex;

 if(FAILED(m_wndHq.GetDocument(&pDoc)) || pDoc==NULL)
  return 0;

 CString strHtml="<html><head><title>网页行情</title></head>"
  "<body leftmargin=0 topmargin=0>"
  "<OBJECT  ID=KYT CODEBASE='http://www.sostock.com.cn/hq/webhq/webhq.cab#version=1,0,0,5'"
  "CLASSID='clsid:C952403E-C18D-4332-9F3D-0E1D7C486145'"
  "ALIGN='CENTER'"
  "width='%d'"
  "height='%d'>"
  "</OBJECT>"
  "<script language=javascript id=KYT1>"
  "window.focus();"
  "</script>"
  "</body>"
  "</html>";


 CRect rc;
 GetClientRect(&rc);

 CString strIn;
 strIn.Format(strHtml,rc.Width()-20,rc.Height()-15);


 CComQIPtr<IPersistStreamInit> spPersistStream(pDoc);

 if(spPersistStream==NULL)
  return 0;


 LPTSTR lpMem = (LPTSTR)::GlobalAlloc( GPTR,strIn.GetLength()+1);
 lstrcpy(lpMem,strIn.GetBuffer());


 CComPtr<IStream>spStream;
 CreateStreamOnHGlobal( lpMem, TRUE, &spStream );
 // 初始化后,装载显示
 spPersistStream->InitNew();
 spPersistStream->Load(spStream );

 return 0;
}

 

 

 先打开一个 about:blank 空白页面才能得到 HtmlDocument


int CHotDlgNews::NewMsg(CString strMsg)
{
m_ocxMsg.Navigate(("about:blank"),NULL,NULL,NULL,NULL);

CComPtr<IDispatch> spDisp = m_ocxMsg.get_Document();

  if(spDisp != NULL)
{
CComQIPtr<IPersistStreamInit> spPersistStream(spDisp);
if (spPersistStream != NULL)
{
LPTSTR lpMem = (LPTSTR)::GlobalAlloc( GPTR,strMsg.GetLength()+1);
lstrcpy(lpMem,strMsg.GetBuffer());


CComPtr<IStream>spStream;
CreateStreamOnHGlobal( lpMem, TRUE, &spStream );
// 初始化后,装载显示
spPersistStream->InitNew();
spPersistStream->Load(spStream ); 
}
}


m_strSms=strMsg;
m_vMsgVector.push_back(strMsg);
UpdateData(FALSE);
ShowWindow(SW_SHOW);
this->SetFocus();

return 0;
}

 

今天用这个方法 向 IE 控件写入 HTML代码,可是在 win2000 pro ie 6 的机器上死活只显示 HTML 源代码,不出页面效果。。。。折腾了一天。。后来发现要把HTML代码写全他才认。。。
我只写了
<div>你好</div><br><div>你好</div> 他就不认识。。。
后来写成:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></head><body><div>你好</div><br>< div>你好</div></body></html>

他就认识了。。。晕~~ 好弱智。。。

 

 

【人工智能之深度学习】23. 推荐系统升级实战:LightGCN重构协同过滤全流程(Amazon-Beauty数据集+完整代码) 摘要:传统协同过滤(如矩阵分解)在电商推荐中存在三大痛点:忽略用户-物品高阶关联、交互数据稀疏导致冷启动、特征工程依赖人工设计。本文基于Amazon-Beauty数据集(含20万+用户交互),用LightGCN图神经网络重构推荐系统:1)构建用户-物品二部图,通过3层图卷积捕捉“用户→物品→用户”的多跳关联;2)采用BPR负采样损失优化嵌入学习,缓解数据稀疏;3)端到端输出用户/物品嵌入,无需人工特征。 阅读详情

相关推荐

二手分析仪器改造实战:如何用PMT搭建荧光检测电路(附完整电路图)

本文详细介绍了如何利用二手分析仪器中的光电倍增管(PMT)核心部件,进行荧光检测电路的实战改造。内容涵盖从PMT工作原理理解、高压供电电路设计、低噪声前置放大(跨阻放大器)到信号调理的完整流程,并提供了关键电路图与调试排错指南,旨在帮助电子爱好者与工程师低成本构建稳定、高灵敏度的专业检测系统。

weixin_29234239的博客 440

易语言 html对象,【对象】——易语言对象DispHTMLDocument

类型: DispHTMLDocument 98个属性,47个方法,标记:{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}-------------------------------- 属性列表--------------------------------属性读取格式: 〈对象(IHTMLElementCollection)〉 对象.读对象型属性 ("all")属性...

weixin_31435039的博客 1345

【华为Hilink SDK Linux系统开发】目录 开源一小步

目录 【华为Hilink开发】第一章:华为hilink平台简介及开发流程 【华为Hilink开发】第二章:华为hilink SDK网络适配、网关添加删除 【华为Hilink开发】第三章:华为hilink SDK子设备添加、删除 【华为Hilink开发】第四章:华为hilink SDK子设备控制及同步 【华为Hilink开发】第五章:华为hilink SDK适配遇到的问题 ...

开源一小步 3619

IHTMLDocument2接口访问Dom,完成自动搜索

首先感叹下:冬至了,别人都去聚餐言欢,我去孤独写这些文字 之所以写这个东西,是一个网管朋友出50元大洋让我写的,有了这个东东,在网吧可以很轻松的做网吧增值广告了.当时是星期天,想着又没有事做,就答应了,虽知星期天的事情还真多,知道昨天晚上才搞定. 我们来看下这位朋友的要求: 1、网站址:http://www.v232.com/?username,后面的username最好能在配置...

weixin_30852419的博客 333

OrangePi Kunpeng Pro 安装 ROS2 + Gazebo

OrangePi Kunpeng Pro 的优点很明显,内置openEuler,配备PD电源,做到开箱即用;板子设计也不错,风扇噪音不大,散热良好,昇腾芯片又确保小板子的性能,接口丰富是这类板子共同的优点,也很好的继承了下来,甚至还可以外接固态,可靠性大大提升。使用起来,哪怕不用openEuler的话,也可以很方便的刷Ubuntu来实现一些需要依赖的开发工作,这次没有跑AI模型,所以对算力的优势还没有很明显的感受,下次可以试一下yolo跑跑看。

Arcan 1822

论文解析-sciPENN

用这2个CITE-seq共有的protein作为训练集,分别将他们特有的protein作为测试集,评估sciPENN对CITE-seq数据集中缺失的protein丰度预测准确度。来自Seurat 4 的PBMC数据集,样本被注射水疱性口炎病毒 (VSV) 载体 HIV 疫苗,数据集包含每个样本注射疫苗0天、3天、7天的CITE-seq数据。PBMCs作为训练集,MALT作为测试集,利用scRNA-seq测试17个蛋白质表达水平。Monocyte:随机取4个样本作为训练集,剩余4个样本作为测试集。

weixin_46065198的博客 1021

关于MSHTML、IHTMLDocument、Ihtmldocument2-5的区别及 document.execCommand方法详解

  最近闲来无事,用vb.net做一个网页自动登录的小程序,里面需要输入验证码。涉及到验证码图片识别的问题,查了很多资料,参考了兄弟猿的一些资料,终于有了一个满意的结果。验证码识别率100%。一是怕忘记,方便自己以后查用,二是与大家分享,互勉提高,特记录在此。希望能有更有效的方法去实现验证码图片的识别。   (一)获取网页验证码图片 1、网页操作的基本知识 (1)MSHTML、Ihtmldocum...

mengxiangde的博客 1722

遗传算法驱动吃豆人进化:从零构建AI游戏智能体

遗传算法是一种模拟自然选择过程的优化技术,其核心原理是通过选择、交叉和变异等操作,在解空间中迭代搜索最优解。该技术为解决复杂优化问题提供了强大工具,尤其在游戏AI、机器人控制和参数调优等场景中价值显著。在游戏AI领域,遗传算法常被用于训练智能体自主决策,例如在经典游戏《吃豆人》中,通过定义智能体的“基因”(如神经网络权重)和“适应度”(如游戏得分),可以引导其进化出躲避幽灵、高效吃豆等策略。本项目结合Pygame框架与神经网络,构建了一个完整的遗传算法训练沙盒,详细展示了如何通过适应度函数设计和参数调优,实

weixin_30467199的博客 273

HtmlDocument 类

  命名空间:  System.Windows.Forms程序集:  System.Windows.Forms(在 System.Windows.Forms.dll 中) HtmlDocument 为 Internet Explorer 的文档对象提供托管包装,该文档对象也称为 HTML 文档对象模型 (DOM)。您可以通过 WebBrowser 控件的 Document 属性获取 H

sclxf的专栏 1677

杰理蓝牙SPP用户接口详细文档

本文档详细介绍了基于JL701n芯片的蓝牙SPP用户接口实现。主要内容包括:1) 文件结构分析,包含必要的头文件和调试配置;2) 核心数据结构,如全局变量和TWS功能ID定义;3) 五大功能模块实现:数据发送、状态管理、数据接收、TWS支持和初始化清理;4) API接口说明,包括公共接口函数和回调函数;5) 使用教程,涵盖基本流程和高级应用示例。该接口支持虚拟串口连接,实现蓝牙设备间数据传输,特别针对TWS场景进行了优化,提供连接状态管理、数据收发等功能。文档还包含错误处理、重试机制等实用建议,适合蓝牙SP

qq_42014563的博客 1179

Oracle EBS 中美国销售税的实现方式

Oracle EBS通过eBTax引擎实现美国销售税管理,需配置税务管辖区、税率及规则等要素,基于收货地址和商品分类计税。系统支持免税交易和使用税处理,但因美国税率复杂多变,建议集成Vertex等第三方服务自动更新税率。关键配置包括创建USSales Tax制度、维护地点层级及物料税务分类,同时需管理客户免税证书。对于跨国业务,系统也支持欧盟VAT等其他国家税制配置。

金牌架构师 296

IHTMLDocument 在Winform中处理Html文档

我这里是在WinForm程序中通过WebBrowser实现Form窗体与HTML页面之间调用。在这个过程中需要在Form窗体后台对Html对象进行处理。下面来看怎么实现: 1.添加对系统Com组件的引用,如下图 不过建议把Microsoft.mshtml.DLL这个DLL从系统中拷贝出来放到程序的debug路径下,然后添加引用,这样是为了防止在系统没有该COM组件时程序不能运行。 2.创

hanyamei的专栏 1158

SAP BOM批量反查代码分享

SAP BOM反查批量查询代码分享

我小时候很黑的博客 4967

html 写入文本,从 IHTMLDocument2 获得/写入 HTML 文本 (IPersistStreamInit)

///////////////////////////////////////////////////////////////////////////////CHtmlViewoperationsBOOLCHtmlView::GetSource(CString&refString){BOOLbRetVal=FALSE;CComPtrspDisp=GetHtmlDocum...

weixin_30356433的博客 226

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

html获得文本,从 IHTMLDocument2 获得/写入 HTML 文本 (IPersistStreamInit)

///////////////////////////////////////////////////////////////////////////////CHtmlViewoperationsBOOLCHtmlView::GetSource(CString&refString){BOOLbRetVal=FALSE;CComPtrspDisp=GetHtmlDocum...

weixin_33969103的博客 268

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

得到WebBrowser中加载的页面的html文本-MFC

方法一、 const int MAX_SIZE=1024*3; IHTMLDocument2 *pHTMLDocument=NULL;  IPersistStreamInit *pPSI=NULL;  IStream *pStream=NULL;  HGLOBAL hHTMLText;  if (!(pHTMLDocument = (IHTMLDocument2*)m_

eldn__的专栏 4561

获得WebBrowser控件中的HTML源码

这里介绍如何用程序的方法获得WebBrowser控件中的HTML的源代码,并可以通过修改源代码内容来修改页面内容(注意:不是显示一个新的页面)。 首先要加入WebBrowser控件,加入控件的方面我就不说了。获得源代码方法有两种: 一、方法1(严格说,这个方法只不过是调用WebBrowser自己的菜单命令"查看源文件而已",并非我们所希望的)关键代码: #include "mshtmcid.h"v

派的无理性 2482

WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流、IPersistStreamInit接口的声明和一些相关的小方法

首先多谢朋友们的捧场; 今天给大家带来一个操作WebBrowser的一些高级方法,我专门写了一个html编辑器的实现代码,有需要的朋友可以自己扩充; 功能实现是直接写流到WebBrowser内不通过临时文件,并且支持对WebBrowser的一些高级控制(其实script可以达到的均可达到,想知道怎么搞的可以阅读代码)。 其中关于IPersistStreamInit接口的声明费了翻工夫,因为以前在 

xinma的专栏 2142

从TWebBrowser得到网页源码及Html

下面先介绍一种极其简单的得到TWebBrowser正在访问的网页源码的方法。一般方法是利用TWebBrowser控件中的Document对象提供的IPersistStreamInit接口来实现,具体就是:先检查WebBrowser.Document对象是否有效,无效则退出;然后取得IPersistStreamInit接口,接着取得HTML源码的大小,分配全局堆内存块,建立流,再将HTML文本写到流

PuCooV的天空 2190

IE编程经验总结(三)——如何显示内存中的网页

       或者因为网页保密的考虑;或者因为软件分发的考虑,有的时候就需要让 IE 或 IE 浏览器控件显示内存或资源中的 HTML 网页。在 MFC 中,CHtmlView::LoadFromResource() 可以显示程序资源中的 HTML 内容。我们都知道MFC的 CHtmlView 其实是对 IWebBrowser2 的一个包装,但是在 IWebBrowser2 中却没有类似的方法。那

AgoCloud的专栏 1114

delphi webbrowser 修改html代码,delphi 从TWebBrowser WebBrowser得到全部html源码

网上查询出很多方法,归结起来有两种1、使用IPersistStreamInit接口实现,函数名都是function GetHtml(const WebBrowser: TWebBrowser) : string;这个函数确实可以得到全部的html源码,但是里面用到了hHTMLText := GlobalAlloc(GPTR, BufSize); 而没有调用GlobalFree释放hHTMLText...

weixin_29324877的博客 425

c语言webbrowser加载html,向WebBrowser中添加静态HTML,执行脚本,载入HTML

*使TWebBrowser中的复制、剪切操作有效://把下面4行加到有WebBrowser的单元最后{ 可能需要引用 ActiveX }initializationOleInitialize(nil);finalizationOleUninitialize;向WebBrowser中添加静态HTML:uses MSHTML;procedure AppendToWB(WB: TWebBrowser; ...

weixin_35749545的博客 436

如何用VC中的CHtmlView取得网页的HTML源码

下面的代码可以得到   HTML   原码,但是有一点还没有解决:  pPersistStream-> GetSizeMax(&uli)  执行正确,但   uli   中的值却全为   0,不得已才定义了一个足够大的常量。  或许有其他高手能帮忙解决这个问题。  #define   MAX_SIZE   4   *   1024   *   1024  void   CHTML

Mirage520的专栏 2062
上一篇: 20世纪10个最伟大的算法
下一篇: ifstream或ofstream读取二进制文本乱码问题
Redeom
博客等级 码龄20年 20粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值