It’s easy to add scripting functionality to your VB project, especially if you have been developing through classes all along. The more classes you program, the more objects you can expose to your script language. You can use both VBScript and JScript as the basis for your scripting engine.
First, download the Microsoft Script Control from MSDN. Install the control according to the instructions provided. You might need to register the control manually (run regsvr32 on it). The footprint on this control is low; the whole download including help is only 243K. Next, create a script file with a text editor such as Notepad:
Sub Main() MsgBox "Hello, world"End Sub
Save it as c: emp.txt and add this code to your application:
Private Sub Command1_Click() Dim iFileNum As Long Dim sFileBuffer As String Dim sTemp As String iFileNum = FreeFile() Open "c: emp.txt" For Input As #iFileNum Do While Not EOF(iFileNum) Line Input #iFileNum, sTemp sFileBuffer = sFileBuffer & sTemp & _ vbCrLf Loop Close #iFileNum ScriptControl1.Reset ScriptControl1.AddCode (sFileBuffer) ScriptControl1.Run "Main"End sub
You have now successfully implemented a scripting engine. You can expose objects in your application like this:
Private Sub Command1_Click() Dim objMyClass As New MyClassNameHere With dlgCommon .ShowOpen sFileName = .FileName End With iFileNum = FreeFile() Open sFileName For Input As #iFileNum While Not EOF(iFileNum) Line Input #iFileNum, sTemp sFileBuffer = sFileBuffer & sTemp & vbCrLf Wend Close #iFileNum ScriptControl1.Reset ScriptControl1.AddObject "Database", objMyClass ScriptControl1.AddCode (sFileBuffer) ScriptControl1.Run "Main"End sub
You can even try code such as this to give ad hoc capabilities to an application:
ScriptControl1.ExecuteStatement "x = 100"MsgBox ScriptControl1.Eval("x = 100") ' TrueMsgBox ScriptControl1.Eval("x = 100/2") ' False