Extension Modules > COM
SBVB
Support:
This thread will demonstrate using the Script BASIC COM interface with Visual BASIC and .NET forms as COM ActiveX controls.
--- Code: Script BASIC ---import com.inc obj = CreateObject("VB6.Sample") 'Sample function prototypes' longTest(v As Long)' intTest(v As Integer)' ByteTest(v As Byte)' GetString(prompt As String, title, def) As String' ShowUI() As Long if obj = 0 then print "CreateObject failed!\n"else print "TypeName obj = ", TypeName(obj), "\n" CallByName(obj, "longTest", VbMethod, 20000) CallByName(obj, "intTest", VbMethod, 1000) CallByName(obj, "byteTest", VbMethod, 255) 'this one fails silently because its invalid value for byte type.. CallByName(obj, "byteTest", VbMethod, 256) retVal = CallByName(obj, "GetString", VbMethod, "Enter some Text:", "my title", "default value!") print "GetString returned: ", retVal, "\n" 'do NOT release objects you dont own.. objForm = CallByName(obj, "LaunchUI") print "objForm = ", objForm, "\n" for i=0 to 10 CallByName(objForm, "AddItem", VbMethod, "Hello from script basic! " & i) next print "Waiting until user closes form to proceede..\n" CallByName(obj, "BlockUntilFormCloses") sDate = CallByName(obj, "SelectDate") if len(sDate) = 0 then print "User pressed cancel for date selection\n" else print "Date: ", sDate, "\n" end if ReleaseObject(obj) print "anndddd were done!\n" end if
Console Output
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL>scriba COM_VB6_Example.sb
TypeName obj = _Sample
GetString returned: Script BASIC talks to VB6.
objForm = 1417320
Waiting until user closes form to proceede..
Date: 9/10/2014
anndddd were done!
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL>
Support:
Here is a C# (C-Sharp) .NET calendar control example being called from Script BASIC COM.
--- Code: Script BASIC ---import com.inc cs = CreateObject("Sample.Sample") if cs = 0 then print "Failed to create the C# com object did you register the dll with regasm and have .NET installed?" returnend if d = CallByName(cs, "GetDate")print "User Selected date: ", d
Console Output
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL\CS_Sample>scriba cs_date.sb
User Selected date: 10/9/2014
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL\CS_Sample>
Support:
Here is an example of VB6 calling Script BASIC functions.
--- Code: Script BASIC ---import com.inc 'in the VB6 GUI'this one uses SBCallBackEx which supports multiple types and args'return values can be either string or long.function Button1_Click(arg, arg1, arg2, arg3, arg4, arg5) print "Button1_Click arg=", arg, "\n" print "Button1_Click arg1=", arg1, "\n" print "Button1_Click arg2=", arg2, "\n" print "Button1_Click arg3=", arg3, "\n" print "Button1_Click arg4=", arg4, "\n" print "Button1_Click arg5=", arg5, "\n" Button1_Click = arg + 1end function 'in the VB6 GUI'this one uses SBCallBack it only takes one long arg. return value is longfunction Button2_Click(arg) print "Back in script basic Button2_Click arg=", arg, "\n" Button2_Click = arg * 2end function obj = CreateObject("VB6.Sample") if obj = 0 then print "CreateObject failed!\n"else print "obj = ", obj, "\n" oCollection = CallByName(obj, "CallBackHandlers", VbGet) print "oCollection = ", oCollection, "\n" CallByName(oCollection, "Add", VbMethod, ADDRESS(Button1_Click()), "frmCallBack.cmdOp1_Click" ) CallByName(oCollection, "Add", VbMethod, ADDRESS(Button2_Click()), "frmCallBack.cmdOp2_Click" ) retVal = CallByName(obj, "LaunchCallBackForm", vbMethod, 21) print "LaunchCallBackForm returned ", retVal, "\n" ReleaseObject(obj) print "test complete!\n"end if
Console Output
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL>scriba COM_VB6_CallBack_Example.sb
obj = 1417264
oCollection = 1417344
Button1_Click arg=21
Button1_Click arg1=two
Button1_Click arg2=3
Button1_Click arg3=four
Button1_Click arg4=5
Button1_Click arg5=1356152
Back in script basic Button2_Click arg=22
LaunchCallBackForm returned 44
test complete!
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL>
Support:
This example uses an OCX control built with the FREE Microsoft VB5CCE (Visual BASIC 5 Controls Edition). HERE is a link to a zip that contains VB5CCE, xp theme manifest and help for CCE. (10.2 MB)
--- Code: Script BASIC ---import com.inc function Button1_Click(arg) print "Back in script basic Button1_Click arg=", arg, "\n" Button1_Click = arg + 1end function obj = CreateObject("VB5.CCESample") if obj = 0 then print "CreateObject failed!\n"else print "obj = ", obj, "\n" oCollection = CallByName(obj, "CallBackHandlers", VbGet) print "oCollection = ", oCollection, "\n" CallByName(oCollection, "Add", VbMethod, ADDRESS(Button1_Click()), "frmCallBack.cmdOp1_Click" ) retVal = CallByName(obj, "LaunchCallBackForm", vbMethod, 21) print "LaunchCallBackForm returned ", retVal, "\n" ReleaseObject(obj) print "test complete!\n"end if
Console Output
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL\vb5cce_Example>scriba VB5_Example.sb
obj = 1402016
oCollection = 1410024
Back in script basic Button1_Click arg=21
LaunchCallBackForm returned 22
test complete!
C:\ScriptBasic_Control-master\engine\COM_Extension_DLL\vb5cce_Example>
Support:
Mike from for O2 forum gave the Script BASIC IDE/Debugger/COM a try on the new Windows 10 preview release. This is good news for all VB classic hold outs.
Navigation
[0] Message Index
[#] Next page
Go to full version