Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Jun 29, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Add a Scripting Engine to Your Application

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:\temp.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:\temp.txt" For Input As #iFileNum
		Do While Not EOF(iFileNum)
			Line Input #iFileNum, sTemp
			sFileBuffer = sFileBuffer & sTemp & _
	Close #iFileNum
	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
		sFileName = .FileName
	End With
	iFileNum = FreeFile()
	Open sFileName For Input As #iFileNum
		While Not EOF(iFileNum)
			Line Input #iFileNum, sTemp
			sFileBuffer = sFileBuffer & sTemp & vbCrLf
	Close #iFileNum
	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")  ' True
MsgBox ScriptControl1.Eval("x = 100/2")  ' False
Dan Newsome
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date