zyl910有动态释放exe的代码,据说vb有脚本执行控件。

解决方案 »

  1.   

    to twinking() :我举个例子吧,就象是在SQL Server中写脚本时,你可以写:
    SELECT * FROM TABLE WHERE FLD1='OK' AND FLD2='KO'
    但如果我对每次查询的条件需要有更灵活的组合,则:
    DECLARE @FLD1,@FLD2 VARCHAR(100)
    SET @FLD1='FLD1'
    SET @FLD2='FLD2'
    EXEC ("SELECT * FROM TABLE WHERE "+ @FLD1 + "='OK' AND " +@FLD2 + "='KO'")
    怎么样?看出来了吧?这段中的两个变量可以作为存储过程的参数传递,执行起来自然功能更强劲。网页中的客户端脚本也可以用response.write的方法来动态执行,另外具我所知,VFP中也有这样的功能。VB应该是不具备这一功能的,但我想一定有人能通过各种途径来实现这样的效果,希望能不吝赐教,谢谢!
      

  2.   

    部件里面有ScriptControl控件,不知道可不可以
    http://www.cx66.com/cxgzs/program/vb/614.htm
    参考一下!
      

  3.   

    谁说“VB应该是不具备这一功能的”?是你提问的方式不对,实际上VB里面这个问题很简单。算了,不说了。
      

  4.   

    是不是指可选择参数那样的。
    private function test(byref varOut as variant , _
                       optional byval strOP as variant = "tt" , _
                       optional byval lngOP as variant = 0) as variant 
    ....
    end function
      

  5.   

    to  dbcontrols(泰山__抛砖引玉):看来你是高手了,那还是要请教你这么个VB里很简单的问题,人呢?
      

  6.   

    还是不太明白。不过关于动态执行,对于VB那真的是很简单。你可以把变量加到 Sql语句中。用ADORecordSet如:if rsR.state<>adStateClosed then rsR.Close
     
    rsR.datasource="SELECT * FROM TABLE WHERE Fld1='" &  "OK'  AND Fld2='" &  "KO'"
    rsR.Open可以把OK与KO换成变量
      

  7.   

    在VB中你可以引用 Script Control 然后你可以在字符串中写入 VBScript 语句,再用 Script Control 执行就行了
      

  8.   

    to scsun(明月清风):不好意思,我想我是没有说清楚,但我的意思不是SQL语句输出的动态生成,那个很简单的,而是指VB指令语句的动态输出,之前SQL的只是示例而已。
      

  9.   

    Option Explicit' 对于 VB5
    'Private Declare Function EbExecuteLine Lib "vba5.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long' 对于 VB6
     Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long' 对于 Access 97/VBE.dll clients like Word 97 and Excel 97
    ' Private Declare Function EbExecuteLine Lib "vba332.dll"  (ByVal pStringToExec As Long, ByVal Unknownn1 As Long,  ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPrivate Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
       ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
    End Function
    Private Sub Combo1_Click()
      Text1 = Combo1.Text
    End SubPrivate Sub Command1_Click()
        Dim res As Boolean
        res = ExecuteLine(Text1.Text)
    End Sub
    Private Sub Form_Load()
    ' Chr$(34)是双引号
        Combo1.AddItem "Var = msgbox(" & Chr$(34) & "看到了?很好用。" & Chr$(34) & " &  vbCrLf & " & Chr$(34) & "是否继续实验?" & Chr$(34) & ", vbYesNo + vbInformation)" & ":" & "If var = vbNo Then End"
        Combo1.AddItem "shell " & Chr$(34) & "calc.exe" & Chr$(34) & ",vbNormalFocus"
        Combo1.AddItem "msgbox SecretFunction(2,2),vbInformation"
        Combo1.AddItem "Form1.BackColor = vbRed"
        Combo1.AddItem "var = 3^2 + sin(3.1415926/4):msgbox var"
        Combo1.ListIndex = 0
    End Sub
      

  10.   

    当然上面高手的方法是相当好的,你可以试试这个:
    引用:microsoft script control 1.0
    Private Sub Command1_Click()
        Dim sc As ScriptControl
        Dim str As String
        Dim p As Long
        Set sc = New ScriptControl
        sc.Language = "vbscript"
        Debug.Print sc.Eval("2+3+7-4")
        str = "Private Sub Test() " & vbCrLf
        str = str & "MsgBox ""hello,这是动态加载的过程"", vbOKOnly + vbInformation" & vbCrLf
        str = str & "End Sub" & vbCrLf
        
        With sc
            .Language = "vbscript"
            '这里相当于动态添加一个test过程
            .AddCode str
            .ExecuteStatement "call test()"
            str = "MsgBox ""hello,这是动态加载的过程"", vbOKOnly + vbInformation"
            .ExecuteStatement str
        End With
        Set sc = Nothing
    End Sub
      

  11.   

    to litsnake1(litsnake):你好,你的方法我已试过,谢谢了。但我想正如Script这个类名一样,这个方法是用于脚本,而我则是想在VB程序的运行时使用,如调用各个窗体模块,程序的全局变量等。
      

  12.   

    to dbcontrols(泰山__抛砖引玉) :非常感谢你的方法,正合我意,这样说来VB岂不是功能非常强大了,真是谢谢了!