2013-08-23 3 views
1

Я только начал изучать HTA и VBScript самостоятельно несколько недель назад, начав эту программу для работы. Я все еще новичок, поэтому простите меня, если это глупый вопрос. Я искал два часа, либо я некомпетентен, либо не знаю, как искать вопрос.Если инструкция Then никогда не выполняется (VBScript)

Мне нужен этот скрипт для проверки трех файлов; если все три существуют, сценарий будет продолжен, если его не будет, появится диалоговое окно с сообщением пользователю, которого нет. Я посмотрел на то, что чувствует себя как пятьдесят различных способов сделать это, но никто из них не работает для меня. Следующий метод - единственный, который не возвращает никаких ошибок, проблема в том, что он ничего не делает, это просто пустое окно. (Я тестирую, проверив только для одного файла первого)

<SCRIPT LANGUAGE="VBScript"> 

    ' Resize and center the window 
    ' ========================================================== 
     sub DoResize 
      window.resizeTo 350,250 
       screenWidth = Document.ParentWindow.Screen.AvailWidth 
       screenHeight = Document.ParentWindow.Screen.AvailHeight 
        posLeft = (screenWidth - 350)/2 
        posTop = (screenHeight - 250)/2  
      window.moveTo posLeft, posTop 
     end Sub 

     DoResize() 

</SCRIPT> 

<TITLE>Test</TITLE> 
    <HTA:APPLICATION 
     Id="oInstall" 
     APPLICATIONNAME="Test" 
     SCROLL="no" 
     SINGLEINSTANCE="yes" 
     WINDOWSTATE="normal" 
     SELECTION="NO" 
     CONTEXTMENU = "NO" 
     BORDER="Dialogue" 
     BORDERStyle = "Normal" 
     INNERBORDER = "YES" 
     NOWRAP 
     SYSMENU = "YES" 
    > 

<HEAD> 
    <STYLE type=text/css> 
    textarea { 
     overflow: hidden; 
     color: #ffffff; 
     border: none; 
     background-color: transparent; 
    } 
    </STYLE> 
    <body background="c:\mount\windows\system32\aopentools\Images\MSCBG.bmp"> 
</HEAD> 
<textarea name="ProgSect" rows=1 cols=16 readonly></textarea><img src="c:\mount\windows\system32\aopentools\images\mscind.gif"> 
<SCRIPT LANGUAGE="VBScript"> 

     Option Explicit 

Sub Check 

    ' Creating objects 
    ' ========================================================== 

     Dim WshShell 
     Dim objFSO, outFile 
     Dim filesys 

     Set objFSO = CreateObject("Scripting.FileSystemObject") 
     Set filesys = CreateObject("Scripting.FileSystemObject") 
     Set oFSO=CreateObject("Scripting.FileSystemObject") 

    ' ========================================================== 

    If oFile=oFSO.FileExists("c:\users\jgainey\desktop\test.txt") Then 

     BeginImage 

    Else 

     MsgBox "An Error Has Occurred" & vbNewLine & "EC03: Test.txt" & vbExclamation & "ERROR" 
     Window.Close 

    End If 

End Sub 

Sub BeginImage 

    ' Creating objects 
    ' ========================================================== 

     Dim intWindowStyle 
     Dim bWaitOnReturn 
     Dim objShell 
     Dim WshShell 
     Dim objFSO, outFile 
     Dim filesys 

     Set objShell = CreateObject("Wscript.Shell") 
     Set WshShell = CreateObject("WScript.Shell") 
     Set objFSO = CreateObject("Scripting.FileSystemObject") 
     Set filesys = CreateObject("Scripting.FileSystemObject") 
     set oFSO=CreateObject("Scripting.FileSystemObject") 

      set oFile=oFSO.OpenTextFile("c:\users\jgainey\desktop\test.txt",1) 
       text=oFile.ReadAll 
       document.all.ProgSect.value=text 

End Sub 

     </SCRIPT> 
    </BODY> 
</HTML> 

В результате окно с моим фоновым изображением, мой .gif, моей текстовой областью, и это его, текстовая область никогда не заполнит. Когда я удаляю файл test.txt, окно сообщения не появляется, на что-то не влияет.

ответ

1

Вы забыли настроить событие так, что Sub Проверить работает на странице загрузки, например, так:

<body background="c:\mount\windows\system32\aopentools\Images\MSCBG.bmp" onload="Check"> 

Edit

БЕЗОШИБОЧНЫМ реализации Суб Check метода:

Sub Check 

    ' Creating objects 
    ' ========================================================== 

     Dim oFSO 
     Set oFSO = CreateObject("Scripting.FileSystemObject") 

    ' ========================================================== 

    If oFSO.FileExists("c:\users\jgainey\desktop\test.txt") Then 

     BeginImage 

    Else 

     MsgBox "An Error Has Occurred" & vbNewLine & "EC03: Test.txt" & vbExclamation & "ERROR" 
     Window.Close 

    End If 

End Sub 
+0

EDIT: Хорошо, я добавил его и определил все мои переменные, теперь он просто возвращает окно сообщения, даже если файл существует. – AbaddonVH

+0

Это странно ... Дважды проверьте местоположение файла снова ... Также убедитесь, что ваша страница имеет разрешение на доступ к файлу ... –

+0

Работает отлично, если текстовый документ есть, но если я его перевешу, я получаю уродливый старый, «Ошибка: файл не найден». Окно «Ошибка скрипта». Поскольку нам нужно использовать коды ошибок, этого не может быть. Есть ли способ обойти это? Еще раз спасибо за сказанное выше, однако, я бы проголосовал за вас, если бы это позволило мне. – AbaddonVH

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