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);
private COPYDATASTRUCT mystr;
private bool receiveInitionFlag=false;
/// <summary>
////// </summary>
/// <param name="m"></param>
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
switch (m.Msg)
{
case WM_COPYDATA:
int i = (int)m.WParam;
MessageBox.Show(i.ToString());
COPYDATASTRUCT mystr = new COPYDATASTRUCT();
mystr = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));
//int iDwdata = mystr.dwData.ToInt32(); //Convert.ToInt32(mystr.dwData);
//MessageBox.Show(iDwdata.ToString());
this.textBox1.Text = mystr.lpData; // Marshal.PtrToStringAnsi(mystr.dwData);
System.Windows.Forms.Message me = new System.Windows.Forms.Message();
ProcessComm pc=new ProcessComm();
ProcessComm.COPYDATASTRUCT RecvData = (ProcessComm.COPYDATASTRUCT)m.GetLParam(typeof(ProcessComm.COPYDATASTRUCT));
if (!pc.initionReceive(ref RecvData))
{
MessageBox.Show("接收错误");
return;
}
this.textBox1.Text = pc.getReceiveContent(); // Marshal.PtrToStringAnsi(mystr.dwData);
break;
default:
base.DefWndProc(ref m);
break;
}
}
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
private void button1_Click(object sender, EventArgs e)
{
ProcessComm pc = new ProcessComm();
pc.Send("Update", 5, textBox1.Text);
//int WINDOW_HANDLER = FindWindow(null,@"Update");
//if(WINDOW_HANDLER == 0)
//{
//}
//else
//{
// byte[] sarr = System.Text.Encoding.Default.GetBytes(this.textBox1.Text);
// int len = sarr.Length;
// COPYDATASTRUCT cds;
// cds.dwData = (IntPtr)100;
// cds.lpData = this.textBox1.Text;
// cds.cbData = len + 1;
// SendMessage(WINDOW_HANDLER, WM_COPYDATA, 10, ref cds);
//}
}
//public struct COPYDATASTRUCT
//{
// public IntPtr dwData;//自定义数据
// public int cbData;//长度
// [MarshalAs(UnmanagedType.LPStr)]
// public string lpData;//首地址
//}