这样的原来的回调函数在vb里面是可以的 在vb里面是这样的
'登录,Uin是Uin号,Pass是密码
Public Declare Sub CmdLoginDll Lib "server.dll" (ByVal addr As Long, _
ByVal Status As Long, ByVal UIN As Long, ByVal name As String, ByVal Pass As String)
addr是回调函数地址
实际调用是这样的
Call CmdLoginDll(AddressOf ExeLoginReply, 11, CLng(Text6.Text), "", Text7.Text)
Sub ExeLoginReply(ByVal nVer As Long, ByVal UIN As Long, ByVal i As Long, ByVal parm As String)
//end sub
现在想把他转成C# 问下 如何转
'登录,Uin是Uin号,Pass是密码
Public Declare Sub CmdLoginDll Lib "server.dll" (ByVal addr As Long, _
ByVal Status As Long, ByVal UIN As Long, ByVal name As String, ByVal Pass As String)
addr是回调函数地址
实际调用是这样的
Call CmdLoginDll(AddressOf ExeLoginReply, 11, CLng(Text6.Text), "", Text7.Text)
Sub ExeLoginReply(ByVal nVer As Long, ByVal UIN As Long, ByVal i As Long, ByVal parm As String)
//end sub
现在想把他转成C# 问下 如何转
解决方案 »
- winform模糊登录
- 一段简单的代码。没看懂!
- 一个c# winform的问题,panel控件如何前端显示?
- WCF如何在需要时将它线程停止运行
- 抽象派生类只能继承一个基类。但可以用一个继承链包含多个抽象类-我不明白继承链
- 求助解决方案
- 如何在webform用ping功能来检测网络的通断?
- 求对C#中委托(delegate)和事件(envents)的详细说明的资料!谢谢!
- 调试错误:"ref或out参数必须是一个lvalue"中的lvalue是什么意思?
- 大家好,如何在 dll中使用sqlcommand呢
- C# Windows 程序中如何把图片文件添加到数据库(附源码及说明)up有分
- 哪里有比较新的InstallShield X 或是11.5的教程啊?
1.定义回调
public delegate void ExeLoginReply(IntPtr css);
2.定义引用的dll函数
[DllImport("server.dll")]
public static extern void CmdLoginDll(ExeLoginReply addreply,long Status,long UIN,string name,string Pass);
3.定义结构
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LOGIN
{
public int nVer;
public int UIN;
public int i;
public string parm;
}
4.定义回调函数的转换
public static void LoginReply(IntPtr temp)
{
LOGIN l=new LOGIN();
l=(LOGIN)Marshal.PtrToStructure(temp,typeof(LOGIN));
}
5.实际调用ExeLoginReply addreply=new ExeLoginReply(LoginReply);
CmdLoginDll(addreply,11,10000,"","123321");出现我未将引用对象设置到对象实例 错误
请教了
using System.Runtime.InteropServices;public delegate bool CallBack(int hwnd, int lParam);public class EnumReportApp { [DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y); public static void Main()
{
CallBack myCallBack = new CallBack(EnumReportApp.Report);
EnumWindows(myCallBack, 0);
} public static bool Report(int hwnd, int lParam) {
Console.Write("Window handle is ");
Console.WriteLine(hwnd);
return true;
}
}
=========
你定义的委托不完全
这个是在vb里面定义的回调函数 里面的内容我没写
vb里面可以这样定义的 vb我也调式了 ok的
Snowdust(雪尘):谢谢你啊 但是dll很复杂的 有客户的dll和server的dll
很可能是你的函数定义和DLL里面定义的不一致,自己看看吧~