前端之家收集整理的这篇文章主要介绍了
[VB.NET]求问高手 进程间大数据的交换 最好方法!,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
求问高手 进程间大数据的交换 最好
方法! 有点糊涂,望高手指点迷津 __________________________________________________________________________ 有点糊涂,望高手指点迷津 __________________________________________________________________________ 顶一下 本人还是喜欢共享内存的方式,对其他没太多的了解,比如通道之类的,望大家指点 __________________________________________________________________________ 希望做过的朋友帮忙 __________________________________________________________________________ 共享内存的方式不行吗?我们很大的XML
文件都是共享内存?有什么问题? __________________________________________________________________________ ????? __________________________________________________________________________ 好像据说FILEMAPPING是最好最安全的 __________________________________________________________________________ 共享内存了 __________________________________________________________________________ 共享内存? __________________________________________________________________________ 顶,这方面没有做过 __________________________________________________________________________ 学习之.... __________________________________________________________________________ http://www.x2blog.cn/jinhong618/ .Net 并没有提供进程间通讯的类,只能借助系统的
功能来实现了,这里提供一种利用发送消息的
方法实现的进程间的通信。 发送方需要
调用两个系统API:SendMessage与FindWindow。 非托管定义如下: [DllImport( User32.dll,EntryPoint= SendMessage )] private static extern int SendMessage( int hWnd,//目标窗口的handle int Msg,// 消息 int wParam,// 第一个消息参数 ref COPYDATASTRUCT lParam // 第二个消息参数 ); [DllImport( User32.dll,EntryPoint= FindWindow )] private static extern int FindWindow(string lpClassName,string lpWindowName); 还有一个数据结构: public struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; } WM_COPYDATA消息: const int WM_COPYDATA = 0x004A; 发送消息
代码如下: int WINDOW_HANDLER = FindWindow(null,@ 接收窗口 ); if(WINDOW_HANDLER != 0) { byte[] sarr = System.Text.Encoding.Default.GetBytes(txtMsg.Text); int len = sarr.Length; COPYDATASTRUCT cds; cds.dwData = (IntPtr) 100; cds.lpData = txtMsg.Text; cds.cbData = len + 1; SendMessage(WINDOW_HANDLER,WM_COPYDATA,ref cds); } 接收方需要上面的那个数据结构的定义与消息常量的定义,然后重写主窗口的DefWndProc
方法: 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); txtMsg.Text =mystr.lpData; break; default: base.DefWndProc(ref m); break; } } ==================================================================
博客空间:http://blog.csdn.net/lovingkiss 资源下载:http://download.csdn.net/user/lovingkiss 优惠接单开发,组件控件定制开发,成品源
代码批发 联系方式:Q64180940 全天在线 ================================================================== __________________________________________________________________________