C# 如何使SendMessage用传送多个参数值?
发送窗体有3个textbox,现在想通过发送消息的方法传送3个textbox的文本值到接受窗体,现在只会实现发送textbox1的值,请问其他textbox的值怎么随之一...
发送窗体有3个textbox,现在想通过发送消息的方法传送3个textbox的文本值到接受窗体,现在只会实现发送textbox1的值,请问其他textbox的值怎么随之一起传输; 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 void button2_Click(object sender, EventArgs e) { int WINDOW_HANDLER = FindWindow(null, @"接受窗体"); 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, 0, ref cds); } } public struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; }
展开
3个回答
展开全部
可以把三个textbox的值使用分隔符合并到一起,在接收窗体拆分,如:
byte[] sarr = System.Text.Encoding.Default.GetBytes(this.textBox1.Text +","+this.textBox2.Text +","+this.textBox3.Text );
接收窗体中把接收的值(假设变量为a)按“,”拆分
string[] aa = a.split(',');
aa就是长度为3的数组了,
aa[0] 代表textbox1的值,aa[1] 代表textbox2的值,aa[2] 代表textbox3的值
byte[] sarr = System.Text.Encoding.Default.GetBytes(this.textBox1.Text +","+this.textBox2.Text +","+this.textBox3.Text );
接收窗体中把接收的值(假设变量为a)按“,”拆分
string[] aa = a.split(',');
aa就是长度为3的数组了,
aa[0] 代表textbox1的值,aa[1] 代表textbox2的值,aa[2] 代表textbox3的值
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-29
展开全部
struct StringAry
{
public string a;
public string b;
public string c;
}
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hwnd,int b,int c,ref StringAry strary)
{
public string a;
public string b;
public string c;
}
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hwnd,int b,int c,ref StringAry strary)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询