在网上看到有人调用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代码吗?
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代码吗?
[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下
还有,声明的不是static方法吗?ApiCall是什么?