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

来源:互联网 发布:软件生存周期过程 编辑:程序博客网 时间:2024/05/29 16:39

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

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

原创粉丝点击