在dll中接口方法:long __fastcall IItemReg(BSTR sGetsureUnitNo, BSTR sHospCode, BSTR sOptNo, int iRows, RcptItems* sRcptItems);
其中,最后一个参数为sRcptItems为一个结构数组
而在c#调用的com接口方法成了 int IItemReg(string sGetsureUnitNo, string sHospCode, string sOptNo, int iRows, ref LhHisSever.RcptItems sRcptItems)
不能传入数组。
望各位大侠帮忙解决
其中,最后一个参数为sRcptItems为一个结构数组
而在c#调用的com接口方法成了 int IItemReg(string sGetsureUnitNo, string sHospCode, string sOptNo, int iRows, ref LhHisSever.RcptItems sRcptItems)
不能传入数组。
望各位大侠帮忙解决
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}通过SendMessage传递这个消息的参数时传递这个结构体的指针即可。
[DllImport("Interop.LhHisSever.dll", EntryPoint = "IItemReg", CharSet = CharSet.Ansi)]
public static extern int IItemReg(string getUnitNo, string hospCode, string operId,int len,[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStruct, SizeConst = 1000)] IntPtr[] ptrs);