194 lines
5.7 KiB
Plaintext
194 lines
5.7 KiB
Plaintext
'Function to load VBS modules
|
|
Public Function LoadVBSModule(VBSModuleParams)
|
|
|
|
'SYNOPSIS
|
|
'Function will load external - additional - VBS Modules into current Script.
|
|
|
|
'DESCRIPTION
|
|
'By working With Modules, this Function Is necessary To load external Modul Functions into the current VB-Script.
|
|
'Call parameter must be an array, because VB-Script functions cannot handle optional Parameters.
|
|
'In develepment and Test Enviroment it is possible, to work with distributed Folders with different Modules. Therefor the Parameter
|
|
'"VBSModuleParams(1)" (which is the ModuleOverrideSourcePath) and the preset Variable "ModuleDefaultSourcePath" are made for.
|
|
'After a successful Import of a Module, Function will Return True, otherwise a False.
|
|
|
|
'REQUIREMENT General
|
|
'VBS must be enabled
|
|
|
|
'REQUIREMENT Assembly
|
|
'<NONE>
|
|
|
|
'REQUIREMENT Variables
|
|
'FSOModule, Module, ModuleName, ModuleCode, ModulePath, WshShell, ModuleAutoSourcePath
|
|
|
|
'REQUIREMENT Variables preSet
|
|
'ModuleDefaultSourcePath (optional)
|
|
|
|
'REQUIREMENT Functions
|
|
'<NONE>
|
|
|
|
'VERSION
|
|
'Number: 1.3.0.1 / Date: 29.08.2020
|
|
|
|
'PARAMETER VBSModuleParams(0) = ModuleName
|
|
'Give the Module Name, you want to load into the current VB-Script.
|
|
|
|
'PARAMETER VBSModuleParams(1) = ModuleOverrideSourcePath
|
|
'Optional Parameter. By giving the ModuleOverrideSourcePath, Function will not check other Paths for the Function you want to load.
|
|
|
|
'EXAMPLE
|
|
'Dim VBSModuleParams
|
|
'Redim VBSModuleParams(0)
|
|
'VBSModuleParams(0) = Module
|
|
'LoadVBSModule(VBSModuleParams)
|
|
|
|
'EXAMPLE
|
|
'Dim VBSModuleParams
|
|
'Redim VBSModuleParams(1)
|
|
'VBSModuleParams(0) = Module
|
|
'VBSModuleParams(1) = "D:\ScriptFiles\Modules"
|
|
'LoadVBSModule(VBSModuleParams)
|
|
|
|
On Error Resume Next
|
|
|
|
'Clear Error Variable
|
|
Err.Clear
|
|
|
|
Dim FSOModule, Module, ModuleName, ModuleCode, ModulePath, WshShell, ModuleAutoSourcePath
|
|
Set FSOModule = CreateObject("Scripting.FileSystemObject")
|
|
|
|
'How many parameters are given in the array
|
|
If (UBound(VBSModuleParams) = 0) Then
|
|
|
|
ModuleName = VBSModuleParams(0)
|
|
|
|
If FSOModule.FolderExists(ModuleDefaultSourcePath) Then
|
|
|
|
'If global var is set, take it!
|
|
ModulePath = ModuleDefaultSourcePath
|
|
|
|
ELSE
|
|
|
|
'Getting the current dir, when ModuleDefaultSourcePath does not exist
|
|
Set WshShell = CreateObject("WScript.Shell")
|
|
ModuleAutoSourcePath = WshShell.CurrentDirectory
|
|
|
|
'By this parameter way the path is more variable
|
|
ModulePath = ModuleAutoSourcePath & "\" & "Modules"
|
|
|
|
If (DEBUG_ON = True) Or (DebugMode = "Enabled") Then
|
|
MSGBOX "Parameter1 = " & VBSModuleParams(0) & vbCrlf & _
|
|
"ModuleDefaultSourcePath = " & ModuleDefaultSourcePath,,"DEBUG Info: Parameter Values in Array - VBSModuleParams"
|
|
End If
|
|
|
|
End if
|
|
|
|
ElseIf (UBound(VBSModuleParams) = 1) Then
|
|
|
|
ModuleName = VBSModuleParams(0)
|
|
ModulePath = VBSModuleParams(1)
|
|
|
|
If (DEBUG_ON = True) Or (DebugMode = "Enabled") Then
|
|
MSGBOX "Parameter1 = " & VBSModuleParams(0) & vbCrlf & _
|
|
"Parameter2 = " & VBSModuleParams(1),,"DEBUG Info: Parameter Values in Array - VBSModuleParams"
|
|
End If
|
|
|
|
Else
|
|
|
|
msgbox "Invalid function call!" & vbCrlf & _
|
|
"Please check the parameters!" & vbCrlf & _
|
|
"...then restart this Script!",vbExclamation ,"LoadVBSModule: Parameter Error!"
|
|
|
|
End if
|
|
|
|
'Checking folder paths 'Check if given path is valid, if not create it
|
|
If Not FSOModule.FolderExists(ModulePath) Then
|
|
|
|
FSOModule.CreateFolder(ModulePath)
|
|
msgbox "The ModulePath doesnt exist, trying to create!" & vbCrlf & _
|
|
"Please place your Modules there: " & vbCrlf & _
|
|
ModulePath & vbCrlf & vbCrlf & _
|
|
"...then restart this Script!",vbExclamation ,"LoadVBSModule: Modules / ModulePath is missing!"
|
|
Else
|
|
|
|
'Clear Error Variable
|
|
Err.Clear
|
|
|
|
'Building full module path and name
|
|
ModuleFullName = ModulePath & "\" & Modulename & ".vbs"
|
|
|
|
'does the file exist?
|
|
If Not FSOModule.FileExists(ModuleFullName) Then
|
|
If Err.Number <> 0 Then
|
|
MSGBOX "Error Code: "& Err.Number & vbCrlf & _
|
|
"Error Description: "& Err.Description,,"ERROR: Module does not exist! "
|
|
Err.Clear
|
|
LoadVBSModule = "False"
|
|
End If
|
|
|
|
Else
|
|
|
|
'Open file
|
|
Set Module = FSOModule.OpenTextFile(ModuleFullName, 1)
|
|
|
|
'Get file content
|
|
ModuleCode = Module.ReadAll
|
|
|
|
'Close file handle
|
|
Module.Close
|
|
|
|
'Execute the file content
|
|
ExecuteGlobal ModuleCode
|
|
|
|
If Err.Number <> 0 Then
|
|
MSGBOX "Error Code: "& Err.Number & vbCrlf & _
|
|
"Error Description: "& Err.Description,,"ERROR: Module cannot be loaded!"
|
|
Err.Clear
|
|
LoadVBSModule = "False"
|
|
Else
|
|
LoadVBSModule = "True"
|
|
End If
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
End Function 'LoadVBSModule
|
|
|
|
'------------------------------------ EXAMPLE TO CALL THE FUNCTION ------------------------------------
|
|
|
|
'Prepare Array (Arrays are zero based!)
|
|
Modules = Array("TestModule1","TestModule2","TestModule3")
|
|
|
|
Dim Module
|
|
|
|
'Load external Modules.
|
|
For Each Module In Modules
|
|
|
|
'Create the array to pass in to our function
|
|
Dim VBSModuleParams
|
|
|
|
'Call the subroutine with two arguments
|
|
Redim VBSModuleParams(0) 'Change to 1, for 2 values
|
|
VBSModuleParams(0) = Module
|
|
'VBSModuleParams(1) = ""
|
|
|
|
LoadVBSModuleResult = LoadVBSModule(VBSModuleParams)
|
|
|
|
If (LoadVBSModuleResult <> "True") Then
|
|
|
|
'Set WScript = CreateObject("WScript.Shell")
|
|
MSGBOX "Module: " & Module & " was Not succesful been loaded!" & vbCrlf & _
|
|
"Please load the Module and try again, running this Function/Module!" & vbCrlf & _
|
|
"Exiting, because of this Issue." & vbCrlf & _
|
|
Err.Description, vbCritical, "DEBUG Info: Cannot load Module!"
|
|
'WScript.Quit = not possible in Winline enviroment
|
|
|
|
End If
|
|
|
|
Next 'end for each
|
|
|
|
TestModule1
|
|
TestModule2
|
|
TestModule3
|
|
|
|
'------------------------------------------------------------------------------------------------------ |