加载BMP图片到VBScript中的对象 [英] Loading a BMP image into an object in vbscript
问题描述
视觉基本和放大器; .NET是不是我的强项,所以请原谅我,如果我问一个愚蠢的问题。
我使用的ActiveX组件来捕获签名的硬件设备。我试图加载BMP图像设备的显示屏上。
该ActiveX配备了良好的文档,这就是该功能负责在屏幕上绘制BMP:
<一个href="http://www.topazsystems.com/software/sigplushelp/Methods_and_Properties_for_use_with_LCD_Tablets/Graphics_Methods/LCDWriteBitmap.htm" rel="nofollow">http://www.topazsystems.com/software/sigplushelp/Methods_and_Properties_for_use_with_LCD_Tablets/Graphics_Methods/LCDWriteBitmap.htm
该函数接受某种HBITMAP / BitmapHandle对象。能有人给我如何从一个URL加载BMP对象的示例(不是从本地文件)?
我用.NET编写的,做了另外一个例子,但我使用VBScript与该的ActiveX。下面是.NET的例子,我发现:
昏暗的Web客户端作为新System.Net.WebClient
昏暗的标志作为位图
昏暗strSign作为字符串
strSign =http://www.topazsystems.com/images/Sign.bmp
签=新System.Drawing.Bitmap(WebClient.OpenRead(strSign))
昏暗惠康作为IntPtr的= sign.GetHbitmap
AxSigPlus1.TabletState = 1
AxSigPlus1.DisplayWindowRes = TRUE
AxSigPlus1.SetBackgroundHandle(HIcon.ToInt32,0
修改(12年5月9日):
在第二次看,ActiveX是一个OCX ActiveX组件,而不是一个DLL。
下面是附带的SDK演示的VBScript脚本:
&LT; SCRIPT LANGUAGE =VBScript中&GT;&LT;! -
子LoadSig
如果document.formname.txtValue2.value =然后,
SigPlus1.ClearTablet()
MsgBox请重新输入显示的签名您的名字
其他
SigPlus1.JustifyX = 10
SigPlus1.JustifyY = 10
SigPlus1.AutoKeyStart
SigPlus1.AutoKeyData = document.formname.txtValue2.value
SigPlus1.AutoKeyData = document.formname.Disclaimer.value
strDisclaimer2 = document.formname.Disclaimer.value
SigPlus1.AutoKeyFinish
SigPlus1.EncryptionMode = 1
SigPlus1.SigCom pressionMode = 2
SigPlus1.DisplayPenWidth = 10
SigPlus1.JustifyMode = 5
SigPlus1.SigString = document.formname.SigData.value
如果strDisclaimer = strDisclaimer2然后
如果SigPlus1.NumberOfTabletPoints = 0然后
MSGBOX姓名不匹配。签名无法显示
结束如果
其他
MSGBOX免责条款已经被更改。签名无法显示
结束如果
结束如果
端子
// - &GT;&LT; / SCRIPT&GT;
&LT; FORM NAME =窗体名称&GT;
&LT; INPUT TYPE =隐藏NAME =SigData&GT;
&LT; INPUT TYPE =隐藏NAME =txtValue&GT;
&LT; DIV STYLE =的位置是:绝对的;顶部:204px;左:10px的;&GT;
&LT; B&GT;从previous页免责声明信息:LT; / B&GT;&LT; BR&GT;&LT; BR&GT;
&LT; INPUT TYPE =文字大小= 117名=免责声明&GT;
&LT; / DIV&GT;
&LT; DIV STYLE =的位置是:绝对的;顶部:252px;左:10px的;&GT;
&LT; BR&GT;&LT; BR&GT;&LT; BR&GT;&LT; BR&GT;&LT; BR&GT;&LT; BR&GT;&LT; BR&GT;
&LT; B&gt;请重新输入您的名字,以显示签名:&LT; / B&GT;&LT; BR&GT;&LT; BR&GT;
&LT; INPUT TYPE =文本NAME =txtValue2&GT;&安培; NBSP;&安培; NBSP;
&LT;输入ID =DoneBtnNAME =DoneBtn类型=按钮值=显示的onclick =LoadSig的风格=BACKGROUND-COLOR:#666699;颜色:白色; FONT:大胆8PT宋体的onmouseout = window.event.srcElement.style.background ='#666699'的onmouseover =window.event.srcElement.style.background ='#AFAFAF'&GT;
&LT; / DIV&GT;
&LT; / FORM&GT;
&LT; SCRIPT LANGUAGE =JavaScript的&GT;&LT;! -
//这些Javascript函数抢到通过GET方法传递的数据,并重新分配
//数据使用此页
函数替换(字符串,文本,由){
//由字符串替换文本
VAR I = string.indexOf(文字),中newstr ='';
如果((!I)||(我== -1))
返回的字符串;
中newstr + = string.substring(0,I)+通过;
如果(1 + text.length&LT; string.length减)
中newstr + =替换(string.substring(1 + text.length,string.length减),文本,通过);
返回中newstr;
}
功能getParm(字符串,PARM){
PARM的//从字符串返回值
变种startPos = string.indexOf(PARM +=);
如果(startPos&GT; -1){
startPos = startPos + parm.length + 1;
变种endPos = string.indexOf(与&amp;,startPos);
如果(endPos == -1)
endPos = string.length减;
返回反向转义(string.substring(startPos,endPos));
}
返回 '';
}
变种传递=取代(location.search.substring(1)中,+,);
document.formname.SigData.value = getParm(通过,SigData');
document.formname.txtValue.value = getParm(通过,txtValue');
document.formname.Disclaimer.value = getParm(通过,'免责声明');
strDisclaimer = document.formname.Disclaimer.value;
// - &GT;&LT; / SCRIPT&GT;
您应该下载该文件并保存暂时的。这样做后,就可以得到处理使用的LoadPicture( )功能。的LoadPicture返回是处理属性图片
对象。我认为这是你所需要的。
暗淡FSO,STM,WebCli,标志,惠康,strTempPath
设置Fso的=的CreateObject(Scripting.FileSystemObject的)
strTempPath = Fso.BuildPath(Fso.GetParentFolderName(WScript.ScriptFullName),Fso.GetTempName)
设置STM =的CreateObject(的ADODB.Stream)
Stm.Type = 1'adTypeBinary
Stm.Open
设置WebCli =的CreateObject(MSXML2.XMLHTTP)
WebCli.openGET,http://www.topazsystems.com/images/Sign.bmp
WebCli.send
Stm.Write WebCli.responseBody
Stm.SaveToFile strTempPath
Stm.Close
套牌=的LoadPicture(strTempPath)
惠康= sign.Handle
AxSigPlus1.TabletState = 1
AxSigPlus1.DisplayWindowRes = TRUE
AxSigPlus1.SetBackgroundHandle HICON,0
套牌=无
Fso.DeleteFile strTempPath删除临时文件
Visual basic & .NET aren't my strong points, so forgive me if I'm asking a stupid question.
I'm using an activex component that captures signatures from a hardware device. I'm trying to load BMP images on the device's display.
The activex comes with good docs, and that's the function that responsible for drawing BMP on the display:
That function accept some kind of HBITMAP / BitmapHandle object. Can someone give me an example on how to load a BMP object from a URL (not from a local file)?
I got another example written in .NET that does that, but I'm using vbscript with that activex. Here's that .NET example I found:
Dim WebClient As New System.Net.WebClient
Dim sign As Bitmap
Dim strSign As String
strSign = "http://www.topazsystems.com/images/Sign.bmp"
sign = New System.Drawing.Bitmap(WebClient.OpenRead(strSign))
Dim HIcon As IntPtr = sign.GetHbitmap
AxSigPlus1.TabletState = 1
AxSigPlus1.DisplayWindowRes = True
AxSigPlus1.SetBackgroundHandle(HIcon.ToInt32, 0
Edit (5/9/12):
On second look, the activex is an OCX activex component and not a DLL.
Here's a demo vbscript script that comes with the SDK:
<SCRIPT LANGUAGE="VBScript"><!--
Sub LoadSig
If document.formname.txtValue2.value="" Then
SigPlus1.ClearTablet()
MsgBox "Please re-enter your first name to display signature"
Else
SigPlus1.JustifyX=10
SigPlus1.JustifyY=10
SigPlus1.AutoKeyStart
SigPlus1.AutoKeyData=document.formname.txtValue2.value
SigPlus1.AutoKeyData=document.formname.Disclaimer.value
strDisclaimer2=document.formname.Disclaimer.value
SigPlus1.AutoKeyFinish
SigPlus1.EncryptionMode=1
SigPlus1.SigCompressionMode=2
SigPlus1.DisplayPenWidth=10
SigPlus1.JustifyMode=5
SigPlus1.SigString=document.formname.SigData.value
If strDisclaimer=strDisclaimer2 Then
If SigPlus1.NumberOfTabletPoints=0 Then
MsgBox "Name does not match. Signature cannot be displayed"
End If
Else
MsgBox "Disclaimer has been changed. Signature cannot be displayed"
End If
End If
end Sub
//--></SCRIPT>
<FORM NAME="formname">
<INPUT TYPE="hidden" NAME="SigData">
<INPUT TYPE="hidden" NAME="txtValue">
<DIV STYLE="position:absolute; top:204px; left:10px;">
<b>Disclaimer information from the previous page:</b><br><br>
<INPUT TYPE="text" size=117 name="Disclaimer">
</DIV>
<DIV STYLE="position:absolute; top:252px; left:10px;">
<br><br><br><br><br><br><br>
<b>Please re-enter your first name to display signature:</b><br><br>
<INPUT TYPE="text" NAME="txtValue2">
<input id="DoneBtn" name="DoneBtn" type="button" value="Display" onclick="LoadSig" style="BACKGROUND-COLOR: #666699; COLOR: white; FONT: bold 8pt verdana" onmouseout="window.event.srcElement.style.background = '#666699'" onmouseover="window.event.srcElement.style.background = '#AFAFAF'">
</DIV>
</FORM>
<SCRIPT LANGUAGE="JavaScript"><!--
//These Javascript functions grab the data passed via the GET method, and redistribute
//the data for use on this page
function replace(string,text,by) {
// Replaces text with by in string
var i = string.indexOf(text), newstr = '';
if ((!i) || (i == -1))
return string;
newstr += string.substring(0,i) + by;
if (i+text.length < string.length)
newstr += replace(string.substring(i+text.length,string.length),text,by);
return newstr;
}
function getParm(string,parm) {
// returns value of parm from string
var startPos = string.indexOf(parm + "=");
if (startPos > -1) {
startPos = startPos + parm.length + 1;
var endPos = string.indexOf("&",startPos);
if (endPos == -1)
endPos = string.length;
return unescape(string.substring(startPos,endPos));
}
return '';
}
var passed = replace(location.search.substring(1),"+"," ");
document.formname.SigData.value = getParm(passed,'SigData');
document.formname.txtValue.value = getParm(passed,'txtValue');
document.formname.Disclaimer.value = getParm(passed, 'Disclaimer');
strDisclaimer = document.formname.Disclaimer.value;
//--></SCRIPT>
You should download the file and save temporarily. After doing this, you can get handle using LoadPicture() function. LoadPicture returns a Picture
object with Handle property. I think this is what you need.
Dim Fso, Stm, WebCli, sign, HIcon, strTempPath
Set Fso = CreateObject("Scripting.FileSystemObject")
strTempPath = Fso.BuildPath(Fso.GetParentFolderName(WScript.ScriptFullName), Fso.GetTempName)
Set Stm = CreateObject("Adodb.Stream")
Stm.Type = 1 'adTypeBinary
Stm.Open
Set WebCli = CreateObject("MSXML2.XMLHTTP")
WebCli.open "GET", "http://www.topazsystems.com/images/Sign.bmp"
WebCli.send
Stm.Write WebCli.responseBody
Stm.SaveToFile strTempPath
Stm.Close
Set sign = LoadPicture(strTempPath)
HIcon = sign.Handle
AxSigPlus1.TabletState = 1
AxSigPlus1.DisplayWindowRes = True
AxSigPlus1.SetBackgroundHandle HIcon, 0
Set sign = Nothing
Fso.DeleteFile strTempPath 'remove temp file
这篇关于加载BMP图片到VBScript中的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!