欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

WinForm實(shí)現(xiàn)跨進(jìn)程通信的方法

 更新時(shí)間:2014年08月26日 16:25:46   投稿:shichen2014  
這篇文章主要介紹了WinForm實(shí)現(xiàn)跨進(jìn)程通信的方法,通過(guò)一個(gè)WinMessageHelper類實(shí)現(xiàn)這一功能,需要的朋友可以參考下

本文實(shí)例展示了WinForm實(shí)現(xiàn)跨進(jìn)程通信的方法,分享給大家供大家參考之用。具體方法如下:

主要功能代碼如下:

public class WinMessageHelper
{
  private struct COPYDATASTRUCT
  {
    public IntPtr dwData;
    public int cbData;
    [MarshalAs(UnmanagedType.LPStr)]
    public string lpData;
  }
  //使用COPYDATA進(jìn)行跨進(jìn)程通信
  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>
  /// 發(fā)送消息
  /// </summary>
  /// <param name="windowReceiveTitle">接收方窗體標(biāo)題名稱</param>
  /// <param name="strData">要發(fā)送的數(shù)據(jù)</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, 0, ref cds);
    }
  }
  /// <summary>
  /// 接收消息
  /// </summary>
  /// <example>
  /// 在窗體中覆蓋接收消息函數(shù)
  /// 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>接收的到數(shù)據(jù)</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;
  }
}

希望本文所述實(shí)例對(duì)大家C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論