关于网友提出的“ delphi 发消息 C#接收消息 的问题”问题疑问,本网通过在网上对“ delphi 发消息 C#接收消息 的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: delphi 发消息 C#接收消息 的问题
描述:本帖最后由 formernetcn 于 2011-03-24 09:21:30 编辑
Delphi发消息:
procedure TForm1.btn1Click(Sender: TObject);
var
copydatastruct:TCopyDataStruct;
begin
urlstr:="abcdef";
copydatastruct.dwData:=0;
copydatastruct.cbData:=length(urlstr)+1;
copydatastruct.lpData:=PChar(urlstr);
sendmessage(FindWindow(nil,'C# Form'),WM_COPYDATA,0,LongWord(@copydatastruct));
end;
C#接收消息:
const int WM_COPYDATA = 0x004a;
public struct copydatastruct
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
switch (m.Msg)
{
case WM_COPYDATA:
copydatastruct mystr = new copydatastruct();
Type mytype = mystr.GetType();
mystr = (copydatastruct)m.GetLParam(mytype);
MessageBox.Show(mystr.lpData);
break;
default: base.DefWndProc(ref m);
break;
}
}
现在出现的问题是C#接收到的IntPtr和cbData都正确,就是秀出的lpData只有一位"a",求高人指点。
解决方案1: 你c#中lpData的类型有问题吧,lpData是个指针,你声明的是个string
以上介绍了“ delphi 发消息 C#接收消息 的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2222545.html