Winform跨程序发送、接收消息

原创 2016年07月16日 16:39:22

看到论坛上一个问题:程序已经在运行,再次运行时,要向前一个实例发送一些消息。

简单的写了一些,直接贴代码!

1、封装了一个类,用于发送信息

    class Note
    {
        [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref CopyData lParam);
        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        //定义消息常数 
        public const int WM_COPYDATA = 0x004A;
        public struct CopyData
        {
            public IntPtr dwData;
            public int cbData;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpData;
        }
        public static bool SendMsg(string MSG)
        {
            var hwnd = FindWindow(null, "MainForm");
            if (hwnd == IntPtr.Zero)
            {
                return false;
            }
            CopyData data;
            data.dwData = IntPtr.Zero;
            data.lpData = MSG;
            data.cbData = Encoding.Default.GetBytes(data.lpData).Length + 1;
            SendMessage(hwnd, WM_COPYDATA, 0, ref data);
            return true;
        }
}

2、在MainForm里override了WndProc,用于接收消息

protected override void WndProc(ref Message m)
{
    if (m.Msg == Note.WM_COPYDATA)
    {
        string s = ((Note.CopyData)Marshal.PtrToStructure(m.LParam, typeof(Note.CopyData))).lpData;
        MessageBox.Show(s);
    }
    else
        base.WndProc(ref m);
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#窗体之间传递消息和事件

C# WinForm编程中,你是否遇到过这样的问题,在主窗口Form1中点击按钮,弹出一个子窗口Form2,你希望在Form2中调用Form1的函数,改变Form1的显示,却发现Form1不听话,达不...

利用WCF的Duplex服务向Winform程序推送消息

利用WCF的Duplex服务向Winform程序推送消息

用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?

Q 我们打算开发一个基于GSM短消息方式的GPS系统,如何利用SMS进行数据通信? A 首先,我们要对由ESTI制订的SMS规范有所了解。与我们讨论的短消息收发有关的规范主要包括GSM 03.3...

C#winform UDP通信 发送和接收信息

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)