打算开发一个程序。这个程序支持二次脚本。(或者叫二次编程/再次编程)
我在程序中内置若干个函数。
脚本程序可以调用这些函数
脚本里也可以有简单的语句。
例如可以执行如下脚本(这脚本可以存放在txt中):
if A>3 then
   call Func1      ------这里Func1是内置的函数,我已经在我的程序中实现。
end if如何让我的程序可以加载并执行这段脚本?
有没有人以前做过?
希望大家讨论一下。

解决方案 »

  1.   

    可能做成dll调用方便点,如果调用exe会很麻烦。
      

  2.   

    使用VB自带的script control就行,结合动态窗口和动态控件加载,还可以支持UI二次开发。
      

  3.   

    建议使用DLL插件框架结构,既然客户懂程序,那效率还是要考虑的,单纯的脚本效率较低。
      

  4.   

    建议使用插件开发。(1)将系统中需要提供给第三方的函数包装在一个COM DLL里面。这样第三方无论是用VBScript,还是VB还是别的语言都可以方便调用。
    (2)需要集成第三方程序,可以编写一个COM接口,并且让第三方按照这个接口编写DLL的插件程序。在你的程序里面动态加载。脚本语言不必自己写,借助VBScript就很不错。
      

  5.   

    假设 Func1 写在模块中,不能直接传递,要借助一个简单的类
    提供一个简单的例子,放到你的工程中就能用。Sub runScript()
    dim cls as mycls
    set cls = New mycls
    s = "sub test(a)" & vbCrLf
    s = s & "if a > 3 then" & vbCrLf
    s = s & "MYcls.MYsub1" & vbCrLf
    s = s & "end if" & vbCrLf
    s = s & "end sub"
    '''s 可从文本中取得
    Set sp = CreateObject("ScriptControl")
    sp.Language = "VBScript"
    sp.AddObject "MYcls", cls
    sp.AddCode s
    a = 4' 
     sp.run "test", a
    End Sub
     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    mycls 类中Public Sub MYsub1()
        Call Func1
    End Sub''''''''''''''''''''''''''''''''''''''''''''''