如何检索 BSTR* picBytes 并在任何 HTML 脚本中显示位图图片

How do you retrieve BSTR* picBytes and display bitmap picture in any HTML script?

本文关键字:脚本 HTML 任何 显示 位图 何检索 检索 picBytes BSTR      更新时间:2023-09-26

我有以下C++ ActiveX接口(我可以更改):

STDMETHOD(GetPicture)(/*[in]*/BOOL bPicture, /*[out, retval]*/ BSTR *pValue,/*[in]*/ BSTR sName, /*[out, retval]*/ UINT * pSize);

我想用它来检索位图并以 HTML 显示它。我已经尝试过JavaScript,但它不支持引用,我现在有以下VBScript

sub getPicture()
Dim bStrValue
Dim uIntSize
Dim ok
ok=objThs.GetPicture(1,bStrValue,0,uIntSize)
'Document.Write  "<IMG SRC="data:image/jpeg;base64, " & bStrValue & ""/>"
alert("GetPicture")
end sub

但是我bStrValueuIntSizeEmpty,如果我离开 Document.Write,我会得到一个Type Mismatch错误。

关于如何获取图像的任何想法?

您可以创建一个属性,而不是使用方法来返回位图,该属性可以从 VBScript 访问。有一个 MS 示例显示了这些,请搜索"ATLActiveX" - 第一个链接应该是该示例。

在该页面的 D 部分中,它显示了如何创建属性,它返回一个浮点数,但您可以创建自己的属性(按照该步骤)返回 BSTR - 称之为类似于 PictureProperty 的东西。

因此,一旦 ATL 向导完成了该属性的创建,您就可以以与已编写的 GetPicture() 方法类似的方式实现它创建的方法,返回包含 Base64 编码图片字符串的 BSTR。

然后,您应该能够使用"Dim bStrValue=objThs.PictureProperty"从VBScript获取图片字符串,假设您的objThs指向正确的ActiveX控件。