dll通过sendmessage发送消息,C#如何接收,和返回给sendmessage返回值。
protected override void DefWndProc(ref Message m)
{
switch (m.Msg)
{
case SEND_PATH:
string message = string.Format("收到消息!参数为:{0},{1}", m.LParam, m.WParam);
byte[] ch = new byte[256];
//string str = Marshal.p(m.LParam);
System.Runtime.InteropServices.Marshal.Copy(m.LParam, ch, 0, 255);
string str = System.Text.Encoding.Default.GetString(ch);
MessageBox.Show(str);///显示一个消息框
break;
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}
各位大神,动态链接库中通过sendmessage发送一个文件路径(参数lparam中),C#需要接收并显示出来,现在调试中看m.LParam是个数值,猜测大概是个指针地址,但是想显示出来,使用了marshal.Copy,程序异常中断结束。第一个问题就是如何让C#接受到dll通过sendmessage发送的文件路径(char *)并显示出来。
第二个问题是经过处理后,如何在C#上给sendmassage返回一个值,在VC中直接在处理后return,sendmessage就可以接收进行条件判断了,C#中怎么返回,sendmessage是阻塞型,我也需要返回我的处理结果,让dll中后续处理