none
两个独立的exe程序之间如何相互通信啊?我尝试使用SendMessage函数,但是无法在C#里面获取LPARAM参数所代表的数据内容。 RRS feed

  • 问题

  • 我编译了两个exe程序,其中一个程序会使用SendMessage函数给另外一个exe程序发送自定义消息,并且通过LPARAM参数传送一些字符串内容过去。

    另外一个程序中,我使用了MessageWindow类,可以接收到发送来的消息,但是却无法将LPARAM参数转换为字符串。代码如下:

            protected override void WndProc(ref Microsoft.WindowsCE.Forms.Message msg)
    {
    string sText="";
                switch (msg.Msg)
                {
                    case WM_CUSTOM_PUSHMAIL:
                        try
                        {
                            sText = Marshal.PtrToStringUni(msg.LParam);
                        }
                        catch (Exception error)
                        {
                            MessageBox.Show(error.Message);
                        }
                        break;
                    default:
                        break;
                }
                base.WndProc(ref msg);
    }

    我使用的是:                        sText = Marshal.PtrToStringUni(msg.LParam);

    函数,但是不成功。如果我用Marshal.ReadByte的话,也不行。。。


    补充:发送消息的程序是VC++编写的(另外那个接收消息的程序是C#编写)

    VC++的程序如下:

       HWND hWnd = FindWindow( NULL, L"MyWindow" );
       if( hWnd != NULL )
       {
        PostMessage( hWnd, 0x488, NULL, (LPARAM)L"你收到了吗?" );
       }

    PostMessage是成功的,另外那个程序也能够接收到消息,但是无法获取(LPARAM)L"你收到了吗?"这个数据


    da jia hao!
    2009年12月21日 15:38

答案