zoukankan      html  css  js  c++  java
  • WinForm 跨进程传输数据

    public class WinMessageHelper
    {
        
    private struct COPYDATASTRUCT
        {
            
    public IntPtr dwData;
            
    public int cbData;
            [MarshalAs(UnmanagedType.LPStr)]
            
    public string lpData;
        }

        
    //使用COPYDATA进行跨进程通信
        public const int WM_COPYDATA = 0x004A;

        [DllImport(
    "User32.dll", EntryPoint = "SendMessage")]
        
    private static extern int SendMessage(
        
    int hWnd, // handle to destination window
        int Msg, // message
        int wParam, // first message parameter
        ref COPYDATASTRUCT lParam // second message parameter
        );

        [DllImport(
    "User32.dll", EntryPoint = "FindWindow")]
        
    private static extern int FindWindow(string lpClassName, string lpWindowName);

        
    /// <summary>
        
    /// 发送消息
        
    /// </summary>
        
    /// <param name="windowReceiveTitle">接收方窗体标题名称</param>
        
    /// <param name="strData">要发送的数据</param>
        public static void Send(string windowReceiveTitle, string strData)
        {
            
    int winHandler = FindWindow(null,windowReceiveTitle);
            
    if (winHandler != 0)
            {
                
    byte[] sarr = System.Text.Encoding.Default.GetBytes(strData);
                
    int len = sarr.Length + 1;
                COPYDATASTRUCT cds;
                cds.dwData 
    = (IntPtr)100;
                cds.lpData 
    = strData;
                cds.cbData 
    = len;
                SendMessage(winHandler, WM_COPYDATA, 
    0ref cds);
            }
        }

        
    /// <summary>
        
    /// 接收消息
        
    /// </summary>
        
    /// <example>
        
    /// 在窗体中覆盖接收消息函数
        
    /// protected override void DefWndProc(ref System.Windows.Forms.Message m)
        
    /// {
        
    ///     switch(m.Msg)
        
    ///     {
        
    ///         case WinMessageHelper.WM_COPYDATA:
        
    ///             string str = WinMessageHelper.Receive(ref m);
        
    ///             break;
        
    ///         default:
        
    ///             base.DefWndProc(ref m);
        
    ///             break;
        
    /// 
        
    ///     }
        
    /// }
        
    /// </example>
        
    /// <returns>接收的到数据</returns>
        public static string Receive(ref System.Windows.Forms.Message m)
        {
            COPYDATASTRUCT cds 
    = new COPYDATASTRUCT();
            Type cdsType 
    = cds.GetType();
            cds 
    = (COPYDATASTRUCT)m.GetLParam(cdsType);
            
    return cds.lpData;
        }
    }


    原文:http://www.cnblogs.com/yuji/archive/2011/07/18/2109138.html 

  • 相关阅读:
    Centos7下安装pip
    Docker进入容器后使用ifconfig等命令“command not found”解决办法
    安装包安装npm
    grafna与饼状图
    Postgresql导出数据报版本不对
    添加动物欢迎语
    zabbix性能优化记
    CPU使用情况之平均负载
    centos7以rpm方法装mysql5.7及大坑
    光速搭lvs + keepalived + nginx
  • 原文地址:https://www.cnblogs.com/08shiyan/p/2313863.html
Copyright © 2011-2022 走看看