using System;
using System.Text;using System.Runtime.InteropServices;namespace AspxBoy
{
/// <summary>
/// ApiCall 的摘要说明。
/// </summary>
public class ApiCall
{
public ApiCall()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[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下
using System.Text;using System.Runtime.InteropServices;namespace AspxBoy
{
/// <summary>
/// ApiCall 的摘要说明。
/// </summary>
public class ApiCall
{
public ApiCall()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[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下
你必须先保证这个com注册过,然后在VS.net中引用这个com,就可以调用了
[MarshalAs(UnmanagedType.LPStr)]
[MarshalAs(UnmanagedType.LPStr)]//以字符串的指针封送
StringBuilder pStrToExec,
int unkown1,//win32的long(4 byte) 在.net 为int(4 byte)
int unkown2,,//win32的long(4 byte) 在.net 为int(4 byte) int fCheckOnly);//win32的long(4 byte) 在.net 为int(4 byte)
public static extern int EbExecuteLine(
IntPtr pStrToExec,
int unkown1,
int unkown2,
int fCheckOnly);
你怎么把字符串指针传进来?我试过unsafe,你怎么传呢