Ответы пользователя по тегу VBScript
  • Как переопределить массив внутри массива?

    omegastripes
    @omegastripes
    В этом случае единственный выход - скопировать вложенный массив в переменную, модифицировать и перезаписать поверх старого.
    Dim arrData(5)
    arrData(0) = Array(1, 10, 100)
    arrData(1) = Array(2, 20, 200)
    
    arrTmp = arrData(1)
    ReDim Preserve arrTmp(9)
    arrData(1) = arrTmp
    
    MsgBox UBound(arrData(1)) ' 9
    Ответ написан
    Комментировать
  • Не запускается vbs в реестре, как исправить?

    omegastripes
    @omegastripes
    Файлы .vbs не являются исполнимыми, для их запуска используются wscript.exe и cscript.exe. В вашем случае Cmdline должен быть вроде этого (вероятно, потребуется указать полный путь к wscript.exe):
    wscript.exe C:\test\ScanInvis.vbs C:\test\ScanInvis.bat /StiDevice:%1 /StiEvent:%2

    Касательно конвертированных в .exe скриптов замечу, что они палятся антивирусами со страшной силой. Единственные программы, которые позволили мне в свое время получить "чистый" .exe из VB - PrimalScript и Portable VB6.0.
    Ответ написан
    Комментировать
  • Скачать картинки по url на пк с использованием vbs?

    omegastripes
    @omegastripes
    Если речь о WSH VBS, вот самый простой пример:

    sUrl = "http://coverlib.com/Download/1729291/The_Prodigy-The_Fat_Of_The_Land_UK-Front-.JPG"
    sPath = "C:\Test\cover.jpg"
    
    With CreateObject("Microsoft.XMLHTTP")
    	.Open "GET", sUrl, False
    	.Send
    	aContent = .ResponseBody
    End With
    With CreateObject("ADODB.Stream")
    	.Type = 1 ' adTypeBinary
    	.Open
    	.Write aContent
    	.SaveToFile sPath, 2 ' adSaveCreateOverWrite
    	.Close
    End With
    Ответ написан
    Комментировать
  • Как удалить свойства файла скриптом (bat, vbs)?

    omegastripes
    @omegastripes
    Например, для удаления свойств и личной информации из Excel файлов, можно сохранить приведенный ниже код в виде файла .vbs, и для удаления свойств - просто перетащить нужные файлы Excel на файл скрипта.

    Option Explicit
    Dim sSrc, oWB, oProp
    With CreateObject("Excel.Application")
    	.Visible = False
    	.DisplayAlerts = False
    	For Each sSrc in WScript.Arguments
    		On Error Resume Next
    		Set oWB = .Workbooks.Open(sSrc)
    		On Error Goto 0
    		If .Workbooks.Count > 0 Then
    			For Each oProp In oWB.BuiltinDocumentProperties
    				oProp.Value = Empty
    			Next
    			.UserName = " "
    			oWB.Save
    			oWB.Close
    		End If
    	Next
    	.Quit
    End With
    CreateObject("WScript.Shell").PopUp "Completed", 1, , 64
    Ответ написан
    1 комментарий
  • Как передать переменную аргументом к другой программе в VBS ?

    omegastripes
    @omegastripes
    WshShell.Run "cmd.exe /c read.cmd " & driveleter(ii), 0, false

    Нативного дебаггера нет. Достаточно функционален Microsoft Script Editor из комлекта Office, необходимо запускать скрипт с директивой //X в командной строке, лично я для этого настроил в Notepad++ горячие клавиши типа "C:\WINDOWS\SysWOW64\wscript.exe" //x "$(FULL_CURRENT_PATH)". Так же можно посмотреть в сторону VbsEdit и PrimalScript.
    Ответ написан
    Комментировать
  • Через что можно сделать ввод большого текста с переходами на новые строки в VBS?

    omegastripes
    @omegastripes
    dim completed
    
    msgbox inputboxml("Enter text:", "Multiline inputbox via HTA", "default" & vbcrlf & vbtab & "multiline" & vbcrlf & "text")
    
    function inputboxml(prompt, title, defval)
    	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


    UPD: убрал ненужный тэг "html" в строке "set proc = ..."
    Ответ написан
    Комментировать