Я нашел эту функцию на GitHub, и она отлично работает для того, что мне нужно, но я не могу понять, как указать тип файла. Кажется, что он по умолчанию «все».VBScript BrowseForFile() Функция - как указать типы файлов?
Function BrowseForFile()
With CreateObject("WScript.Shell")
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2)
Dim tempName : tempName = fso.GetTempName() & ".hta"
Dim path : path = "HKCU\Volatile Environment\MsgResp"
With tempFolder.CreateTextFile(tempName)
.Write "<input type=file name=f><script>f.click()" & _
";(new ActiveXObject('WScript.Shell'))" & _
".RegWrite('HKCU\\Volatile Environment\\MsgResp', f.value)" & _
";close();<" & "/" & "script>"
.Close
End With
.Run tempFolder & "\" & tempName, 1, True
BrowseForFile = .RegRead(path)
.RegDelete path
fso.DeleteFile tempFolder & "\" & tempName
End With
End Function
«Пример: MsgBox BrowseForFile()
Я попытался модифицировать эту строку:
.Write "<input type=file name=f ><script>f.click()" & _
";(new ActiveXObject('WScript.Shell'))" & _
".RegWrite('HKCU\\Volatile Environment\\MsgResp', f.value)" & _
";close();<" & "/" & "script>"
Для этого:
.Write "<input type=file accept=" & chr(34) & "text/plain" & chr(34) & " name=f ><script>f.click()" & _
";(new ActiveXObject('WScript.Shell'))" & _
".RegWrite('HKCU\\Volatile Environment\\MsgResp', f.value)" & _
";close();<" & "/" & "script>"
Но, до сих пор не работает. Можно ли использовать эту функцию и настроить разрешенные типы файлов? Я хочу, чтобы только .csv, .txt и .log
Помимо: Что вы пытаетесь достичь здесь? VBScript нельзя надежно использовать на веб-страницах (и вообще не будет работать на MSIE11 +), а Visual Basic в целом выходит. – duskwuff
Я знаю. Мне в основном нравится, как легко манипулировать IE, но я знаю, что мне нужно отпустить ... Что вы рекомендуете в качестве замены? – Drivium