`
webcode
  • 浏览: 5925731 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

c++中进程通信之剪贴板常用函数

 
阅读更多

vc++中进程通信之剪贴板常用函数

本人节选自《21天学通VC++》一书

操作系统中实现同一台机器上的不同进程之间的通信是非常重要的。一般来说,进程间的通信方法有三种:剪贴板、邮槽和管道。由于后两种方式需要一定的操作系统基础,此处就不作介绍。本节将详细介绍采用剪贴板进行进程通信的实现。
剪贴板常用函数
读者应该对剪贴板是比较熟悉的,当按下【Ctrl+C】键时,选中的内容就会复制到剪贴板中,然后再按下【Ctrl+V】键,可以将剪贴板上的内容复制到应用程序中。

说明:当要把一个进程上的内容复制到另一个进程上时,最简单的办法就是使用剪贴板。
在读者的印象中,通常认为剪贴板是传输数据的媒介,用户要复制的数据首先保存到剪贴板中。这种想法不能说是正确的。因为实际上要复制的数据并不是真的保存在剪贴板上,而是在一块内存区域中。而剪贴板同这块内存区域相关联。或者说,由剪贴板来管理这块内存区域。例如,这里要将进程A中的内容通过剪贴板复制到进程B中,大致遵循以下步骤。
在进程A自己的4GB的地址空间中申请一块内存。
把要复制的数据写到申请的内存块当中;再把内存块交给剪贴板管理器中。
进程B由剪贴板中取出数据。
下面是与剪贴板操作相关的一些函数。
 OpenClipboard函数:该函数用于打开剪贴板以检查或防止其他应用程序修改剪贴板中的内容。如果在本进程调用此函数来打开剪贴板之前,剪贴板已经被其他窗口打开,那么该函数调用将失败。此时,应该先调用CloseClipboard函数将剪贴板成功关闭之后再调用OpenClipboard打开。
 GlobalAlloc函数:该函数用于在堆上分配一块指定大小的内存区域。
 GlobalLock函数:该函数用于将一个内存块锁住,并返回一个指向内存块中第一个字节的指针变量,引用计数器加1。
 GlobalUnlock函数:该函数用于将被锁住的内存块进行解锁,引用计数器数字减1。
 SetClipboardData函数:该函数用于将内存块以指定的剪贴板的内容格式放到剪贴板管理器中。
 GetClipboardData函数:该函数用于从剪贴板中以指定的剪贴板的内容格式取出内存块。
 CloseClipboard函数:该函数用于关闭剪贴板,释放剪贴板资源。

分享到:
评论

相关推荐

    Visual C++2010开发权威指南.part07

    16.1.9 一个利用剪贴板在不同进程 16.1.9 之间交换数据的示例 616 16.2 邮槽通信 619 16.2.1 CreateM{过滤}ailslot()函数 619 16.2.2 GetM{过滤}ailslotInfo()函数 620 16.2.3 SetM{过滤}ailslotInfo()函数 621 ...

    Visual C++2010开发权威指南(共三部分).part1.rar

    5.6.5 Rich Edit控件中的剪贴板操作 216 5.6.6 Rich Edit控件中的流操作 216 5.6.7 Rich Edit控件中的打印操作 216 5.6.8 无底的Rich Edit控件 217 5.6.9 来自Rich Edit控件的通知 217 5.7 Visual C++ 2010 Progress...

    精通WindowsAPI 函数 接口 编程实例

    11.3.1 获取、设置剪贴板数据 310 11.3.2 监视剪贴板 317 11.3.3 剪贴板数据格式 325 11.4 数据复制消息(WM_COPYDATA) 327 11.4.1 数据发送端 327 11.4.2 数据接收端 330 11.5 其他进程间通信方式 332...

    精通Windows.API-函数、接口、编程实例.pdf

    11.3.1 获取、设置剪贴板数据 310 11.3.2 监视剪贴板 317 11.3.3 剪贴板数据格式 325 11.4 数据复制消息(WM_COPYDATA) 327 11.4.1 数据发送端 327 11.4.2 数据接收端 330 11.5 其他进程间通信方式 332...

    Visual C++实践与提高-COM和COM+篇『PDF』

    4.5.5 剪贴板传输——例程OleClip 4.5.6 OLE拖放——例程OleDragDrop 小结 第5章 COM技术的应用 5.1 基于COM的应用技术 5.1.1 COM、OLE与ActiveX 5.1.2 OLE文档 5.1.3 自动化 5.1.4 ActiveX控件 5.1.5 ActiveX文档...

    Windows应用程序捆绑核心编程光盘代码

    3.2 进程通信概述 55 3.2.1 Windows进程间标准通信技术的发展 55 3.2.2 应用程序与进程 56 3.2.3 进程之间通信的类型 56 3.3 使用自定义消息通信 57 3.3.1 通过自定义消息实现进程间通信的方法 57 3.3.2 通过...

    C++MFC编程实例

    1.4.3 窗口进程 10 1.5 怎样使用MFC创建一个窗口类 11 1.5.1 使用AfxRegisterWndClass () 函数注册一个窗口类 11 1.5.2 使用AfxRegisterClass ()函数 创建一个窗口类 12 1.6 怎样销毁一个MFC窗口类 14 1.7 厂商...

    Visual_C++精彩实例详解

    第5章 剪贴板查看程序 第6章 进程查看程序 第7章 透明窗体实例 第8章 状态栏对话框 第9章 带微调和滑动条控件的工具栏 第10章 仿Winamp界面多媒体播放器 第11章 数据库操作--ODBC篇 第12章 数据库操作-DAO篇 第13章...

    Visual C++ MFC编程详解和实例

    1.4.3 窗口进程 10 1.5 怎样使用MFC创建一个窗口类 11 1.5.1 使用AfxRegisterWndClass () 函数注册一个窗口类 11 1.5.2 使用AfxRegisterClass ()函数 创建一个窗口类 12 1.6 怎样销毁一个MFC窗口类 14 1.7 厂商安装...

    VISUAL C++MFC编程实例

    本书通过85个实例全面讲述了应用MFC进行Visual C++编程的思想。每个实例均以编写一个应用程序要走的步骤编写。全书共分四部分进行介绍,第一部分是基础知识,第二部分讲述用户界面的实例,第三部分讲述MFC内部处理...

Global site tag (gtag.js) - Google Analytics