Проблемы с выпуском msgbox в VBSCript

Я запускаю сценарий, который выполняет несколько проверок на компьютере под управлением Windows перед запуском программы. Я запускаю VBScript, который проверяет такие вещи, как состояние исправления, состояние брандмауэра и статус AntiVirus. После запуска сценария информация должна выводиться, чтобы конечный пользователь мог исправить любые возникающие проблемы. Это нужно выводить в одном окне сообщения, которое отображает все, что не соответствует требованиям конечного пользователя.

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

errors = Array(strSUpdate,strFirewallStatus,strProdState)
Dim errorfix

For Each item In errors
 set errorfix = errorfix & item & vbnewline
 if (errors = "Off") Then
 msgbox "Compliance Check results" & vbNewLine & vbNewLine & _
 "The following requires attention" & vbNewLine & errorfix & vbNewLine & _
 "Press OK to Continue", 0, "Moka 5 Compliance Check"
 Else
 msgbox "Compliance Check results" & vbNewLine & vbNewLine & _
 "Everything looks good." & vbNewLine & vbNewLine & _
 "Press OK to Continue", 0, "Moka 5 Compliance Check"
 End if
Next

Огромная благодарность

2 ответа

Мое предложение состоит в том, чтобы избежать массивов вообще и использовать гораздо более удобные словари вместо этого.

Если ничего больше, вы создадите гораздо более читаемый код таким образом, но они также намного мощнее, чем массивы.

Option Explicit

Dim errors
Set errors = CreateObject("Scripting.Dictionary")

' fill the dictionary troughout your program. Fill in just the 
' actionables and don't insert the stuff that okay.
errors("Firewall Status") = "Off"
errors("This other thing") = "Missing"

If errors.Count = 0 Then
 MsgBox "Compliance Check results" & vbNewLine & vbNewLine & _
 "Everything looks good." & vbNewLine & vbNewLine & _
 "Press OK to Continue", vbOkOnly, "Moka 5 Compliance Check"
Else
 Dim item, toFix

 For Each item In errors
 toFix = toFix & " - " & item & " is " & errors(item) & vbNewLine
 Next

 Msgbox "Compliance Check results" & vbNewLine & vbNewLine & _
 "The following requires attention:" & vbNewLine & _
 toFix & vbNewLine & _
 "Press OK to Continue", 0, "Moka 5 Compliance Check"
End If


Я думаю, вам нужно вернуть return для msgbox, т. tempresponse = Msgbox("") Ссылка здесь

errors = Array(strSUpdate,strFirewallStatus,strProdState)
Dim errorfix, tempresponse

For Each item In errors
 set errorfix = errorfix & item & vbnewline
 if (errors = "Off") Then
 tempresponse = msgbox ("Compliance Check results" & vbNewLine & vbNewLine & _
 "The following requires attention" & vbNewLine & errorfix & vbNewLine & _
 "Press OK to Continue", 0, "Moka 5 Compliance Check")
 Else
 tempresponse = msgbox ("Compliance Check results" & vbNewLine & vbNewLine & _
 "Everything looks good." & vbNewLine & vbNewLine & _
 "Press OK to Continue", 0, "Moka 5 Compliance Check")
 End if
Next

Как сказал @Tomalak после каждой итерации, вам нужно очистить msgbox, будет ли popup работать лучше, так как оно очистит сообщение через x секунд.

licensed under cc by-sa 3.0 with attribution.