利用SendMessage 发送消息到当前机子的另一个程序
2010-11-24 15:12
316 查看
C# code // 发送端 public partial class Form1 : Form { private IntPtr ip = IntPtr.Zero; const int WM_COPYDATA = 0x004A ; public Form1() { 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 COPYDATASTRUCT lParam // second message parameter ); [DllImport( "User32.dll" , EntryPoint = "FindWindow" )] private static extern int FindWindow( string lpClassName, string lpWindowName); private void Form1_Load( object sender, EventArgs e) { } private void button1_Click( object sender, System.EventArgs e) { int WINDOW_HANDLER = FindWindow( null , "YYDuanXinForm" ); if (WINDOW_HANDLER == 0 ) { MessageBox.Show( " 程序未启动。" ); } 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, 0x004A , 0 , ref cds); } } } public struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; } C# code // 接收端 主要部分代码 const int WM_COPYDATA = 0x004A ; protected override void DefWndProc( ref System.Windows.Forms.Message m) { switch (m.Msg) { case 0x004A : // 处理消息 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 ; } } [StructLayout(LayoutKind.Sequential)] public struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; } |
相关文章推荐
- vb利用FindWindow,GetWindowText,SendMessage查找程序并发送最小化消息
- SendMessage发送WM_COMMAND消息控制另一个程序的某一个按钮
- vb利用FindWindow,GetWindowText,SendMessage查找程序并发送最小化消息
- 使用sendMessage向其他程序发送消息
- C#通过SendMessage发送消息,改变其他程序的下拉框控件(ComboBox)的值
- SendMessage(利用反射)发送消息
- 在java程序中如何能获取到另一个程序的windows句柄,又如何使用这个句柄向这个窗口发送消息
- 利用dbus-send在命令行下给程序发送消息,调用其相应的函数
- 利用API的消息发送程序原理
- 在delphi中用消息来向另一个程序发送消息
- c#通过SendMessage发送消息,改变其他程序的下拉框控件(ComboBox)的值
- 如何给另一个桌面的程序发送消息?
- 对话框程序接收另一个线程发送的消息
- c#通过SendMessage发送消息,改变其他程序的下拉框控件(ComboBox)的值
- delphi程序向另一个可执行程序发消息(使用GetForegroundWindow; 找出当前操作系统中活动的第一个窗口)
- vc中使用SendMessage正确发送自定义消息的方法
- ASP小偷程序如何利用XMLHTTP实现表单的提交以及cookies或session的发送
- kafka单条消息过大导致生产者程序发送到broker失败
- MFC使用SendMessage()发送自定义消息实现进程间通信
- vc中使用SendMessage正确发送自定义消息的方法