Vbscript / HTA - 添加一些背景颜色ou背景图像和顶部徽标

时间:2014-10-25 20:15:47

标签: vbscript hta

我有一个工作的vbscript表单,其中包含一些基于hta代码的部分。 该表单旨在用票务工具打开事件。这也按预期工作。 我打算做一些调整,特别是添加背景壁纸或更改颜色,还要在表单的左上角添加一个徽标(在jpg ou png中)。我认为这可以在脚本的hta部分进行更改,但我尝试应用一些修改,到目前为止没有成功。

以下是代码。任何线索?非常感谢你。

Sub GetParams(sTitle, sPrompt, oParams, bAccepted, iWidth, iHeight) 
Dim oWnd, sContent, aKeys, i 
sContent = "<div style='font: 8pt tahoma;'>" 
aKeys = oParams.Keys 
For i = 0 To oParams.Count - 1 
sContent = sContent & "<span style='margin: 4px;'>" & HtmlSafe(aKeys(i)) & "</span><br>" 
sContent = sContent & "<input id=textbox" & i & " value='" & HtmlSafe(oParams.Item(aKeys(i))) & "' type='textbox' style='font: 8pt tahoma; width: 100%; margin: 4px;'/><br>" 
Next 
sContent = sContent & "<br><input onclick='window.accepted=true;' type='button' value='Criar' style='font: 8pt tahoma; width: 75px; height: 21px; float: right; margin-right: 20px;'/></div>" 
Set oWnd = CreateWindow() 
With oWnd 
With .Document 
.Title = sTitle 
.Body.Style.Background = "buttonface" 
.Body.InnerHtml = sContent 
End With 
.ResizeTo iWidth, iHeight 
.MoveTo CInt((.Screen.AvailWidth - iWidth) / 2), CInt((.Screen.AvailHeight - iHeight) / 2) 
End With 
oWnd.ExecScript "var accepted=false;" 
On Error Resume Next 
Do 
bAccepted = oWnd.Accepted 
If bAccepted Then Exit Do 
If Err.Number <> 0 Then 
bAccepted = False 
Exit Sub 
End If 
WScript.Sleep 10 
Loop 
For i = 0 To oParams.Count - 1 
oParams(aKeys(i)) = oWnd.Document.GetElementById("textbox" & i).Value 
Next 
oWnd.Close 
End Sub 

Function HtmlSafe(sText) 
HtmlSafe = Replace(Replace(Replace(Replace(sText, "&", "&amp;"), "<", "&lt;"), ">", "&gt;"), vbCrLf, "<br>") 
End Function 

Function CreateWindow() 
Dim sSignature, oShellWnd, oProc 
sSignature = Left(CreateObject("Scriptlet.TypeLib").Guid, 38) 
Set oProc = CreateObject("WScript.Shell").Exec("mshta ""about:<html><head><script>moveTo(-32000,-32000);document.title=' '</script><hta:application id=app border=thick minimizebutton=no maximizebutton=no scroll=no showintaskbar=yes contextmenu=no selection=no innerborder=no icon=""""/><object id='shell' classid='clsid:8856F961-340A-11D0-A96B-00C04FD705A2'><param name=RegisterAsBrowser value=1></object><script>shell.putproperty('" & sSignature & "',document.parentWindow);</script></head></html>""") 
Do 
If oProc.Status > 0 Then 
Set CreateWindow = Nothing 
Exit Function 
End If 
For Each oShellWnd In CreateObject("Shell.Application").Windows 
On Error Resume Next 
Set CreateWindow = oShellWnd.GetProperty(sSignature) 
If Err.Number = 0 Then Exit Function 
On Error Goto 0 
Next 
Loop 
End Function 

1 个答案:

答案 0 :(得分:0)

我想你想用脚本包含图像,而不是引用磁盘上已存在的图像。您可以使用CSS。使用data URI定义background-image属性,如下所示:

background-image: url(data:image/png;base64,<base64-encoded image>);

红色1px PNG图像的示例数据URI:

background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goaER0v2K3gpwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAMSURBVAjXY/jPwAAAAwEBABjdjbAAAAAASUVORK5CYII=);

如果您没有将内容转换为base64的工具,则可以使用online converter

通过background-repeat属性控制图像的重复。要添加徽标,您可以将徽标设为<div>的背景,并将重复设置为no-repeat

如果您在<style></style>块中定义样式,则需要指定一个选择器,例如:

<style>
body {
  background-image: url(data:image/png;base64,iVBORw0K...);
}
</style>

否则你必须将它放在标签的style属性中,例如:

<body style="background-image: url(data:image/png;base64,iVBORw0K...);">