• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 高手快来看看,关于连接点的问题

高手快来看看,关于连接点的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了点杀高手,全职高手点映,全职高手点映会,陈翔六点半灌篮高手,绝世高手点映等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 高手快来看看,关于连接点的问题
描述:

一个DLL组件(支持连接点),两个客户端,其中一个客户端a调用组件方法M1,怎么才能在另一个客户端b响应事件???
也就是说,客户端a调用方法后,自己可以响应事件,但b怎么才能响应呢?


解决方案1:

你好像想跨进程使用组件。
看样子只有单建对象(只建立一个对象)才能满足你的要求。但是DLL无法实现单建对象(因为DLL中的对象无法跨进程)。所以建议将你的组件该成EXE,然后实现单建对象,这样就可以使组件影响到所有的客户端进程。相关建立单建对象实例的帖子在CSDN里有很多,搜索一下。

解决方案2:

为了能在两个进程之间进行通讯,由以下几种方法可供参考:
0。剪贴板Clipboard: 在16位时代常使用的方式,CWnd中提供支持
1。窗口消息 标准的Windows消息以及专用的WM_COPYDATA消息 SENDMESSAGE()接收端必须有一个窗口
2。使用共享内存方式(Shared Memory)
   a.设定一块共享内存区域           
     HANDLE CreateFileMapping(HANDLE,LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD,  LPCSTR) 
     产生一个file-mapping核心对象
     LPVOID MapViewOfFile(
         HANDLE hFileMappingObject,
         DWORD  dwDesiredAcess,
         DWORD  dwFileOffsetHigh,
         DWORD  dwFileOffsetLow,
         DWORD  dwNumberOfBytesToMap
     );
    得到共享内存的指针
   b.找出共享内存
    决定这块内存要以点对点(peer to peer)的形式呈现
        每个进程都必须有相同的能力,产生共享内存并将它初始化。每个进程
        都应该调用CreateFileMapping(),然后调用GetLastError().如果传回的
        错误代码是ERROR_ALREADY_EXISTS,那么进程就可以假设这一共享内存区         域已经被别的进程打开并初始化了,否则该进程就可以合理的认为自己 排在第          一位,并接下来将共享内存初始化。
    还是要使用client/server架构中
       只有server进程才应该产生并初始化共享内存。所有的进程都应该使用
HANDLE OpenFileMapping(DWORD dwDesiredAccess,
                                   BOOL bInheritHandle,
                                   LPCTSTR lpName);
        再调用MapViewOfFile(),取得共享内存的指针
   c.同步处理(Mutex)
   d.清理(Cleaning up) BOOL UnmapViewOfFile(LPCVOID lpBaseAddress);
                        CloseHandle()
3。动态数据交换(DDE)通过维护全局分配内存使的应用程序间传递成为可能
   其方式是再一块全局内存中手工放置大量的数据,然后使用窗口消息传递内存    指针.这是16位WIN时代使用的方式,因为在WIN32下已经没有全局和局部内存    了,现在的内存只有一种就是虚存。   
4。消息管道(Message Pipe)
   用于设置应用程序间的一条永久通讯通道,通过该通道可以象自己的应用程序
   访问一个平面文件一样读写数据。
   匿名管道(Anonymous Pipes)
       单向流动,并且只能够在同一电脑上的各个进程之间流动。
   命名管道(Named Pipes)
       双向,跨网络,任何进程都可以轻易的抓住,放进管道的数据有固定的格        式,而使用ReadFile()只能读取该大小的倍数。
       可以被使用于I/O Completion Ports
5   邮件槽(Mailslots)
    广播式通信,在32系统中提供的新方法,可以在不同主机间交换数据,在        WIN9X下只支持邮件槽客户
6。Windows套接字(Windows Socket)
   它具备消息管道所有的功能,但遵守一套通信标准使的不同操作系统之上的应    用程序之间可以互相通信。
7。Internet通信 它让应用程序从Internet地址上载或下载文件
8。RPC:远程过程调用,很少使用,因其与UNIX的RPC不兼容。
9。串行/并行通信(Serial/Parallel Communication)
   它允许应用程序通过串行或并行端口与其他的应用程序通信
10。COM/DCOM 
     通过COM系统的代理存根方式进行进程间数据交换,但只能够表现在对接口     函数的调用时传送数据,通过DCOM可以在不同主机间传送数据。 


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于连接点和事件……应该需要高手。
  • 高手快来看看,关于连接点的问题
  • 高手请进,关于连接点和dispid的问题

相关文章

  • 2017-06-05 我在控制台里面使用一个头文件没有问题,可是到DLL中使用就发生错误
  • 2017-06-04 急急急急急急急急!!我在word里面放了一个按钮我想让他弹出一个能交互式的对话框
  • 2017-06-04 ATL控件怎么调整自身的大小?
  • 2017-06-04 ATL中如何使用Richedit控件
  • 2017-06-04 请问VC中如何调用indexingservice
  • 2017-06-04 在ActivexControl中使用过静态库的兄弟来帮个忙
  • 2017-06-05 ExitThread函数是不是被某个线程用来结束自己的?
  • 2017-06-04 这句VBA代码,用C++写不行?
  • 2017-06-04 VS2013通过adox创建access数据库
  • 2017-06-04 用ATL写的Service程序,前台程序如何调用MFC

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 多线程的消息显示问题(我已献出所能提供的最高分)
    • 在win2000server中设置了COM+VB写的测试DLL,导出的msi文件只能在win2000pro中安装,不能安装在XP。为什么?
    • 通过事件连接点获得控件的事件通知的困惑
    • 串口通信之发送文件
    • 再问文件夹选项更改后刷新的问题
    • 多个定时器是不是等同于多线程?如果多个定时器的延时相同会不会发生冲突,造成程序不响应?在线等!
    • 关于dsoframer增加自定义接口的问题!!!!急
    • 最简单的对话框程序,按一个button产生另一个线程,居然界面也死了无响应,怎么回事啊?
    • 请教,C++动态库导出DEF文件中这个标识是什么意思
    • 怎样在浏览器外启动ActiveX得应用程序

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有