在网上看到有人调用VB6.0的VBA6.DLL中的EbExecuteLine方法制作VB代码解释器,但是好象他是用VB.NET调用的,以下是他调用API的方法:
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 pStringToExec是个指向源字符串的指针
方法的返回值也是个指针,指向解释后的结果字符串。
比如:
l = EbExecuteLine(StrPtr(ByVal cmd), 0, 0, 0)
请问高手:如何用C#实现相同的功能?用unsafe代码吗?

解决方案 »

  1.   

    用 vb.net调用好后编译成DLL,在用C#调用这个VB.Net的DLL,,笨方法
      

  2.   


    [DllImport("vba6.dll",EntryPoint="EbExecuteLine",CharSet=CharSet.Unicode)]
    public static extern int EbExecuteLine(
    [MarshalAs(UnmanagedType.LPStr)]
    StringBuilder pStrToExec,
    int unkown1,
    int unkown2,
    int fCheckOnly);
    StringBuilder sb=new StringBuilder("2+3");
    int i=ApiCall.EbExecuteLine(sb,0,0,0);vba6.dll在bin目录下和winnt\system32下
      

  3.   

    谢谢,但是还是不行,按照3楼的方法做了,报NullReferenceException异常。
    还有,声明的不是static方法吗?ApiCall是什么?