您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> delphi 发消息 C#接收消息 的问题

delphi 发消息 C#接收消息 的问题

来源:网络整理     时间:2016/7/2 21:25:08     关键词:

关于网友提出的“ 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

相关图片

相关文章