2013-09-09 2 views
1

У меня есть следующая строка в коде, запрашивающая вход пользователя.Пропустите две строки текста в InputBox

strFind = InputBox("Please enter the text to look for.","Replace Text in Files") 

мне нужно пользователю ввести две строки текста, разделенных LF или CR или CRLF (линейный перерывами)
Однако InputBox только excepts одну строку текста.
Любое предложение?

Благодаря

+0

почему бы вам не создать свой собственный диалог? –

+0

@ DanielA.White Это не для веб-страницы, а не для HTA. его для простого файла .vbs –

+0

вы можете создать пользовательский, который использует com. –

ответ

2
dim completed 

msgbox inputboxml("Enter text:", "Multiline inputbox via HTA", "default" & vbcrlf & vbtab & "multiline" & vbcrlf & "text") 

function inputboxml(prompt, title, defval) 
    dim window 
    set window = createwindow() 
    completed = 0 
    defval = replace(replace(replace(defval, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") 
    with window 
     with .document 
      .title = title 
      .body.style.background = "buttonface" 
      .body.style.fontfamily = "consolas, courier new" 
      .body.style.fontsize = "8pt" 
      .body.innerhtml = "<div><center><nobr>" & prompt & "</nobr><br><br></center><textarea id='hta_textarea' style='font-family: consolas, courier new; width: 100%; height: 580px;'>" & defval & "</textarea><br><button id='hta_cancel' style='font-family: consolas, courier new; width: 85px; margin: 10px; padding: 3px; float: right;'>Cancel</button><button id='hta_ok' style='font-family: consolas, courier new; width: 85px; margin: 10px; padding: 3px; float: right;'>OK</button></div>" 
     end with 
     .resizeto 700, 700 
     .moveto 100, 100 
    end with 
    window.hta_textarea.focus 
    set window.hta_cancel.onclick = getref("hta_cancel") 
    set window.hta_ok.onclick = getref("hta_ok") 
    set window.document.body.onunload = getref("hta_onunload") 
    do until completed > 0 
     wscript.sleep 10 
    loop 
    select case completed 
    case 1 
     inputboxml = "" 
    case 2 
     inputboxml = "" 
     window.close 
    case 3 
     inputboxml = window.hta_textarea.value 
     window.close 
    end select 
end function 

function createwindow() 
    rem source http://forum.script-coding.com/viewtopic.php?pid=75356#p75356 
    dim signature, shellwnd, proc 
    on error resume next 
    signature = left(createobject("Scriptlet.TypeLib").guid, 38) 
    do 
     set proc = createobject("WScript.Shell").exec("mshta ""about:<head><script>moveTo(-32000,-32000);</script><hta:application id=app border=dialog minimizebutton=no maximizebutton=no scroll=no showintaskbar=yes contextmenu=no selection=yes innerborder=no icon=""%windir%\system32\notepad.exe""/><object id='shellwindow' classid='clsid:8856F961-340A-11D0-A96B-00C04FD705A2'><param name=RegisterAsBrowser value=1></object><script>shellwindow.putproperty('" & signature & "',document.parentWindow);</script></head>""") 
     do 
      if proc.status > 0 then exit do 
      for each shellwnd in createobject("Shell.Application").windows 
       set createwindow = shellwnd.getproperty(signature) 
       if err.number = 0 then exit function 
       err.clear 
      next 
     loop 
    loop 
end function 

sub hta_onunload 
    completed = 1 
end sub 

sub hta_cancel 
    completed = 2 
end sub 

sub hta_ok 
    completed = 3 
end sub 
+0

Тот же метод [здесь] (http://stackoverflow.com/a/22545156/2165759) – omegastripes

Смежные вопросы