put an image as the background of an input box

不打扰是莪最后的温柔 提交于 2019-12-08 11:26:30

The built-in InputBox function doesn't support custom backgrounds. You can build custom dialogs using the Internet Explorer COM object, though:

Set ie = CreateObject("InternetExplorer.Application")

ie.Navigate "about:blank"
ie.document.title = "some title"
ie.ToolBar        = False
ie.Resizable      = False
ie.StatusBar      = False
ie.Width          = 300
ie.Height         = 150

Set style = ie.document.CreateStyleSheet()
style.AddRule "body", "background-image: url('C:\path\to\your.jpg')"
Set style = Nothing

Do Until ie.ReadyState = 4 : WScript.Sleep 100 : Loop

ie.document.body.innerHtml = "<p><input type='text' id='userinput'></p>" _
  & "<p><input type='hidden' id='OK' name='OK' value='0'>" _
  & "<input type='submit' value='OK' onClick='VBScript:OK.Value=1'>" _
  & "<input type='submit' value='Cancel' onClick='VBScript:OK.Value=-1'></p>"
ie.Visible = True
ie.document.all.userinput.focus

Do While ie.document.all.OK.value = 0 : WScript.Sleep 100 : Loop

If ie.document.all.OK.value = 1 Then
  'user pressed [OK]
Else
  'user clicked [Cancel]
End If

Of course this is just a very basic example, so you most likely need to further customize the styles as well as the HTML code. One possible improvement would be the inclusion of the background image in the form of a data URI:

style.AddRule "body", "background-image: url(data:image/jpeg;base64,/9j/4AA...')

That way you won't have to reference an external file for the background. There are free online encoders you could use for encoding image files as base64, for instance this one.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!