65,208
社区成员
发帖
与我相关
我的任务
分享
//声明
typedef bool (CALLBACK *CallbackHandler)(char *sMsg);
CallbackHandler m_CrdHandler ; //回复信息的回调函数
extern "C"__declspec(dllexport)BOOL WINAPI APISetCallback(CallbackHandler Info)
{
m_CrdHandler = Info;
return TRUE;
}
extern "C" __declspec(dllexport) int __stdcall APITestCall(char* sMsg)
{
m_CrdHandler(sMsg);
return 0;
}
//声明
public delegate void MyDllCall(string buf);
[DllImport("D:\\xx\\xx\\xx.dll", EntryPoint = "APISetCallback")]
static extern int APISetCallback(MyDllCall fa);
[DllImport("D:\\xx\\xx\\xx.dll", EntryPoint = "APITestCall")]
static extern int APITestCall(string sBuf);
private void Btn_SetCallBack_Click(object sender, EventArgs e)
{
APISetCallback(DoWhileGetMsg);
}
//声明回调的函数
public void DoWhileGetMsg(string buf)
{
return;
if (buf == "") return;
System.IO.StreamWriter sw;
sw = new System.IO.StreamWriter(sLogFile, true);
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Client Get command:");
sw.WriteLine(buf);
sw.Flush();
sw.Close();
return;
}
private void Btn_TestCall_Click(object sender, EventArgs e)
{
APITestCall(MsgBox1.Text);
}

private static MyDllCall callbackfun;
private void Btn_SetCallBack_Click(object sender, EventArgs e)
{
callbackfun = DoWhileGetMsg;
APISetCallback(callbackfun);
}
谢谢