【Win32 API】利用SendMessage实现winform与wpf之间的消息传递
2015-03-17 16:57
741 查看
[b]引言[/b]
有一次心血来潮,突然想研究一下进程间的通信,能够实现消息传递的方法有几种,其中win32api中的sendmessage就是当中的一种比较简单的方法。于是参考了网上各种资料,做了一个小demo。
[b]发送方Winform[/b]
1.新建一个Winform项目,添加控件,如下
View Code
3.wpf接收端完成。
[b][b]最终界面效果[/b]
[b]
[/b]
[b]小结[/b]
本文介绍了如何用sendmessage函数在窗体间发送消息,sendmessage函数是win32api的一种,然而win32api又是一个好庞大的话题了,我现在还只是入门未遂,渐行渐学罢了.另外,消息的传递方法不只一种,例如我们还可以用wcf进行通信,有时间再研究.最后,如果您有更好的建议,请不吝指教,感激不尽!
有一次心血来潮,突然想研究一下进程间的通信,能够实现消息传递的方法有几种,其中win32api中的sendmessage就是当中的一种比较简单的方法。于是参考了网上各种资料,做了一个小demo。
[b]发送方Winform[/b]
1.新建一个Winform项目,添加控件,如下
public MainWindow() { InitializeComponent(); this.Loaded += Window_Loaded; } #region 定义常量消息值 public const int WM_GETTEXT = 0x0D; public const int WM_SETTEXT = 0x0C; public const int WM_SIZEING = 0x0214; public const int WM_COPYDATA = 0x004A; public const int WM_LBUTTONDBLCLK = 0x0203; #endregion #region 定义结构体 public struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; } #endregion private void Window_Loaded(object sender, RoutedEventArgs e) { HwndSource hWndSource; WindowInteropHelper wih = new WindowInteropHelper(this); hWndSource = HwndSource.FromHwnd(wih.Handle); //添加处理程序 hWndSource.AddHook(MainWindowProc); } private IntPtr MainWindowProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { switch (msg) { case WM_COPYDATA: { COPYDATASTRUCT mystr = new COPYDATASTRUCT(); Type mytype = mystr.GetType(); COPYDATASTRUCT MyKeyboardHookStruct = (COPYDATASTRUCT)Marshal.PtrToStructure(lParam, typeof(COPYDATASTRUCT)); this.textbox.Text = MyKeyboardHookStruct.lpData; break; } default: { break; } } return IntPtr.Zero; }
View Code
3.wpf接收端完成。
[b][b]最终界面效果[/b]
[b]
[/b]
[b]小结[/b]
本文介绍了如何用sendmessage函数在窗体间发送消息,sendmessage函数是win32api的一种,然而win32api又是一个好庞大的话题了,我现在还只是入门未遂,渐行渐学罢了.另外,消息的传递方法不只一种,例如我们还可以用wcf进行通信,有时间再研究.最后,如果您有更好的建议,请不吝指教,感激不尽!
相关文章推荐
- 利用委托实现父控件与子控件之间消息传递
- 两个或多个进程之间通过Win32 API实现内存共享的方法(转)
- 用WM_COPYDATA消息来实现两个进程之间传递数据
- Win32消息处理API---SendMessage
- 利用Bundle实现Android Activity间消息的传递
- 如何在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- 利用消息队列实现两个进程之间的文件复制
- winform 下实现消息传递机制
- WIN32 API/WTL 学习笔记(消息传递过程)
- android 入门学习笔记 利用bundle实现android,activity间消息的传递
- Win32 API消息函数:SendMessage
- 如何在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- winform 下实现消息传递机制
- 两个或多个进程之间通过Win32 API实现内存共享的方法(转)
- 线程之间传递数据对象(利用线程槽实现)
- 主题:利用Bundle实现Android Activity间消息的传递
- 如何在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- winform进进程之间传递消息
- winform进程之间传递消息
- [转贴]Win32 API消息函数:SendMessage