<接收方>
public partial class FormServer : Form { const int WM_COPYDATA = 0x004A;
public FormServer() { InitializeComponent(); }
protected override void DefWndProc(ref System.Windows.Forms.Message m) { switch (m.Msg) { case WM_COPYDATA: COPYDATASTRUCT mystr = new COPYDATASTRUCT(); Type mytype = mystr.GetType(); mystr = (COPYDATASTRUCT)m.GetLParam(mytype); this.textBox1.Text = mystr.lpData; break; default: base.DefWndProc(ref m); break; } }
}
public struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; }
<发送方>
const int WM_COPYDATA = 0x004A;
public FormClient() { InitializeComponent(); }
[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 MCOPYDATASTRUCT lParam // second message parameter );
[DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern int FindWindow(string lpClassName, string lpWindowName);
private void button1_Click(object sender, System.EventArgs e) { int WINDOW_HANDLER = FindWindow(null, @"AAAAA"); if (WINDOW_HANDLER == 0) { } else { byte[] sarr = System.Text.Encoding.Default.GetBytes(this.textBox1.Text); int len = sarr.Length; MCOPYDATASTRUCT cds; cds.dwData = (IntPtr)100; cds.lpData = this.textBox1.Text; cds.cbData = len + 1; SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds); } } struct MCOPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; }
转载于:https://www.cnblogs.com/fanybul/archive/2009/05/14/1456990.html