2015-08-01 5 views
2

Так что я пытаюсь использовать ScriptGUI (от here) для моих файлов .bat, но у него нет селектора файлов, поэтому я попытался его добавить.Проблемы с HTA

Я только что скопировал и переименовал код вокруг, и он, похоже, работает, кроме добавления другой переменной для предмета подфункции.

 ' build a file selector 
     ElseIf UCase(strSplit(0)) = "FILE" Then 
      strHTML = strHTML & Build_File(strLabel,id,Replace(strLabel," ",""),strSplit(2)) 
      ' store the batch file in the arrControls array 
      arrControls(id) = "file,none" 
      id = id + 1 

> проблема, как представляется, код под здесь "Click_File(" & fiId & "," & fiFilter & ")"

Function Build_File(fiLabel, fiId, fiName, fiFilter) 
    ' Construct a file selector 
    Dim strHTML 
    strHTML = "<input class='button' type='button' name='" _ 
      & fiName & "' value='" & fiLabel & "' id='" & fiId _ 
      & "' onClick=" & chr(34) & "Click_File(" & fiId & "," & fiFilter & ")" & chr(34) _ 
      & " onMouseOver=" & chr(34) & fiName & ".className='button btnhov'" & chr(34) _ 
      & " onMouseOut=" & chr(34) & fiName & ".className='button'" & chr(34) _ 
      & ">" 
    strHTML = strHTML & " <input type='text' readonly='readonly' value='none' name='fi" & fiName & "' id='fi" & fiId & "'/> " 
    Build_File = strHTML 
    End Function  

>

Sub Click_File(strId, fiFilter) 
    ' open a file selector 
    set objShell= CreateObject("WSCript.Shell") 
    myCur = objShell.CurrentDirectory 
    Dim file 
    file = GetFileName(myCur, fiFilter) 
    arrControls(strId) = "file," & file 
    document.getElementById("fi" & strId).value = file 
    document.getElementById("fi" & strId).size = Len(file) + 2 
    End Sub 

Это говорит мне, что я не могу использовать круглые скобки при вызове к югу.

Любые идеи?

EDIT: новая проблема,

Я использую скрипт из Роб ван дер Woude для диалога открытого файла (верхний пост с here), который, по-видимому предполагается работать в ОМТ, но я получаю сообщение об ошибке сказав " Компонент ActiveX не может создать объект: «UserAccounts.CommonDialog»

ответ

0

Ну, сообщение не является неправильным. You не может использовать круглые скобки при вызове Sub.

Изменить эту линию от:

& "' onClick=" & chr(34) & "Click_File(" & fiId & "," & fiFilter & ")" & chr(34) _ 

к:

& "' onClick=" & chr(34) & "Click_File " & fiId & "," & fiFilter & chr(34) _ 

и посмотреть, если это решит вашу проблему.

+0

Я думаю, это сработало! достаточно забавно, что они уже были там, и отлично работают со всеми опциями, которые были добавлены ранее. –

+0

У меня сейчас проблема с этой строкой. \t set objShell = CreateObject («WSCript.Shell») В нем указано, что переменная не определена: objShell –

+0

Вызовите sub с помощью одного arg "works". Однако при использовании нескольких аргументов вы получите упомянутую ошибку. Так, возможно, вы добавили аргумент в эту процедуру? – Bond

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