现在的位置: 首页 > 综合 > 正文

进程间传递消息

2012年07月03日 ⁄ 综合 ⁄ 共 5015字 ⁄ 字号 评论关闭
下面介绍使用SendMessage在进程间传递消息。(如:两个打开的应用程序间)
分析:
发送消息
 1/// <summary>
 2        /// 发送消息样例
 3        /// </summary>
 4        /// <param name="strWindow">输入参数:windows消息字符串。</param>
 5        /// <param name="strMessage">输入参数:发送消息字符串。</param>
 6        /// <returns>返回值:发送是否成功。</returns>

 7        public bool SendMessage(string strWindow,string strMessage)
 8        {
 9            IntPtr wnd = FindWindow(null,strWindow);
10            if(wnd!=IntPtr.Zero)
11            {
12                CopyDataStruct  cds;  
13                cds.dwData  =  (IntPtr)0
14                cds.lpData  =  strMessage;
15                cds.cbData  =  System.Text.Encoding.Default.GetBytes(strMessage).Length + 1;
16
17                SendMessage(wnd,WM_COPYDATA,0ref  cds);  
18                return true;
19            }

20            else
21                return false// 窗体不存在。
22        }

接收消息

 1/// <summary>
 2        /// 重写方法
 3        /// </summary>
 4        /// <param name="m">输入参数:消息对象。</param>

 5        protected override void DefWndProc(ref Message m)
 6        {
 7            switch(m.Msg)  
 8            {  
 9                case  WM_COPYDATA:  
10                    string str = ReceiveMessage(ref m);
11                    MessageBox.Show(str);
12                    break;
13                default:  
14                    break;  
15            }

16
17            base.DefWndProc (ref m);
18        }

完整实例

  1using System;
  2using System.Drawing;
  3using System.Collections;
  4using System.ComponentModel;
  5using System.Windows.Forms;
  6using System.Runtime.InteropServices;
  7
  8namespace FiveSpace.LawChannel.CommonControls
  9{
 10    /// <summary>
 11    /// CopyDataFrm 用于进程间消息的传递。
 12    /// </summary>

 13    public class CopyDataFrm : System.Windows.Forms.Form
 14    {
 15        私有控件变量
 21
 22        构造函数
 53
 54        Windows 窗体设计器生成的代码
 67
 68        消息代码声明
 71
 72        FindWindow & SendMessage
 99
100        进程间传输数据结构。

抱歉!评论已关闭.