Running custom VbScript code from asp
I was in the need to run some custom VbScript code from an asp page, so I went through the problem and found a very simple solution.
A common solution is to use the Microsoft ScriptControl.
Here is a very simple example running a piece of code stored in a text file.
default.asp
<%@language=VBSCRIPT%>
<%
dim sFile : sFile = ""
sFile = LoadFile("MyCustomScript.txt")
if len(sFile) > 0 then
Response.Write "The result is: " & ExecScript(sFile)
end if
Function ExecScript(sScript)
dim sc
'Create the Script Control object
set sc = server.CreateObject("scriptcontrol")
sc.Language = "VBSCRIPT"
sc.UseSafeSubset = false
sc.Reset
'add the custom script to the ScripContro object
sc.AddCode sScript
'run the code and evaluate the result of the "CustomScript" function
ExecScript = sc.Eval("CustomScript")
set sc = nothing
End Function
Function LoadFile(sFileName)
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Dim objTextStream
dim strFileName
dim lsTemp
strFileName = server.MapPath(sFileName)
const fsoForReading = 1
If objFSO.FileExists(strFileName) then
'The file exists, so open it and output its contents
Set objTextStream = objFSO.OpenTextFile(strFileName, fsoForReading)
lsTemp= vbNullString & objTextStream.ReadAll & vbNullString
objTextStream.Close
Set objTextStream = Nothing
Else
'The file did not exist
Response.Write strFileName & " was not found."
End If
'Clean up
Set objFSO = Nothing
LoadFile = lsTemp
end function
%>
MyCustomScript.txt
function CustomScript()
'Let's calculate the area of a rectangle
dim dHeight : dHeight = 10
dim dWidth : dWidth = 20
CustomScript = cstr(dHeight * dWidth)
end function
This is a very easy example of how to use the Microsoft ScriptControl in an asp page.
A more realistic task would be, for example, store the script in a database, get the scripts from there and run 'em like exposed above.