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

VC++深入详解(16):进程通信 我们只介绍几种简单的进程间通信机制:剪切板、匿名管道、命名管道、匿名管道和油槽。 平时大家都用过剪切板,比如选中记事本上的一段文字,然后Ctrl+C复制到剪切板上,然后在word中按下Ctrl+V,将其复制。这其实完成了两个进程之间的通信:从记事本到word。实际上,剪切板是系统维护管理的一段内存区域,当在一个进程中复制数据时,是将数据复制到这个内存区域,而在另一个进程中粘贴数据时,是从这个内存 阅读详情

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

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

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

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

 


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/broadview2006/archive/2009/01/16/3793426.aspx

VC++6.0进程间通信与剪贴板操作实践 本文还有配套的精品资源,点击获取 简介:进程通信是操作系统的关键技术之一,允许不同进程间交换信息。在VC++6.0环境下,我们专注于实现剪贴板功能,使用Windows API中的剪贴板函数如OpenClipboard、CloseClipboard、EmptyClipboard和SetClipboardData等,以传递文本和图像数据。通过创建两个进程和定义消息处理函数,本实... 阅读详情

相关推荐

VC++ 进程间通信技术详解与实战

进程间通信(Inter-Process Communication,IPC)是操作系统中实现不同进程间数据交换和协调的一系列技术。其目的在于使各进程能够共享资源,协调执行,从而提高系统的整体性能和资源利用率。在现代软件开发中,进程间通信(IPC)是实现复杂软件系统的重要技术手段。Microsoft Visual C++(简称VC++)提供了多种API和库以支持不同类型的IPC方法。理解这些API和库的特性和使用方法是深入学习Windows系统编程的必要步骤。

weixin_42113456的博客 1170

VB操作剪贴板,原来只需一句代码

VB操作剪贴板,原来只需一句代码━━━━━━━━━━━━━━━━━━━━━━━━━━呵呵,前段时间找了好久,都没找到合适的代码!今天写代码的时候无意中打上VB两个字母,本来是想看看动态添加控件的函数如何写.却看到有 Clipboard 字样,心里一阵狂喜...哈哈,便有了下面三句剪贴板操作一句话搞定的代码诞生...  Option Explicit Priv

nxhujiee的专栏 6860

别再傻傻分不清:PX4、Pixhawk、ArduPilot、APM到底啥关系?一张图给你讲明白

本文全面解析开源飞控领域核心概念,厘清PX4、Pixhawk、ArduPilot与APM的定位与关系。通过硬件平台演进史和飞行控制软件对比,帮助开发者理解开源飞控生态,并提供新项目开发建议与特殊需求考量,助力无人机开发中的明智选择。

weixin_32770423的博客 412

获取当前打开剪贴板的进程的ID

提示:以下函数均为C++函数 先获取当前打开剪贴板的窗口:GetOpenClipboardWindow 再根据窗口句柄获取进程ID:GetWindowThreadProcessId

lianzhouxiaowu的专栏 3409

Unity轻量级框架QFramework:四层架构与命令事件驱动的实战指南

在Unity游戏开发中,软件架构是确保项目可维护性和可扩展性的核心。通过分层架构(如MVC、DDD)和事件驱动设计,开发者能够有效管理代码复杂度,实现模块间的解耦与高效通信。QFramework作为一个轻量级框架,精准地运用了这些原理,通过严格定义的四层架构(表现层、系统层、数据层、工具层)和命令/事件通信规则,为中小型项目提供了“约束下的自由”。其核心价值在于以极简的代码(不足1000行)强制实施清晰的职责分离,如使用命令模式集中管理状态变更,并通过事件驱动实现响应式更新。这种设计特别适用于解决项目规模扩

weixin_42521032的博客 262

Robust MPC 4 (鲁棒&随机 MPC)

Robust MPC

weixin_44299806的博客 2736

孙鑫VC++第17章进程间的通信

第17章、进程间的通信   1.      当一个进程启动后,操作系统为其分配4GB的私有地址空间。位于同一个进程中的多个线程共享同一个地址空间,因此线程之间的通信非常简单;   2.      四种进程间通信方式:剪切板,匿名管道,命名管道,邮槽;   3.      如果某个程序已经打开了剪贴板,则其他应用程序将不能修改剪切板,直到前者调用了CloseClipboard函数。

C__Monkey的专栏 2176

# 多用户 JupyterHub 配置教程(通用 Linux 服务器版)

以上即是通用 Linux 服务器上的多用户 JupyterHub 实战配置。从安装认证与 Spawner 选择自动创建系统用户到反代与运维,覆盖了小团队到中等规模的主流场景。根据团队增长与合规要求,你可以进一步引入、统一身份源(LDAP/OAuth2/Keycloak)与资源配额治理,平滑演进到企业级部署。

数字化老司机 1289

数据复制特定的代码:监视剪贴板和剪贴板内容到治疗后的剪贴板

根据日志文件最近的报告经常做统计,然后,数据录入excel。 日志形如: 缴费总笔数                   12 缴费用户数                   123 缴费金额数                1234.1 缴费50元以上笔数              321 缴费50元以上用户数            342 缴费50元以上金额       ...

weixin_33681778的博客 210

MIMO-OFDM 通信-感知一体化(ISAC)中的联合优化与性能权衡

本文深入探讨了MIMO-OFDM技术在通信-感知一体化(ISAC)系统中的核心作用与挑战。文章分析了如何通过联合优化资源分配、波束成形与波形设计,在有限的频谱与硬件资源下,实现通信速率与感知精度之间的最佳平衡,并指出了工程实践中面临的同步、干扰等关键难题。

dapp9builder的博客 216

国产NAS哪家强?极空间&绿联&威联通&群晖对比

随着个人数据量暴增,传统网盘空间不足和下载速度慢问题愈发凸显。新势力NAS,作为数据管理领域的璀璨新星,正以其独特的互联网设计理念,引领家庭及小型办公用户向数据存储的新纪元。它不仅仅是一款产品,更是为初学者用户量身定制的贴心伙伴。其系统界面之简洁、操作流程之直观,让人一目了然,真正实现了“即插即用”的极致便捷。同时,新势力NAS在保持专业水准的同时,更提供了多样化的扩展性配置,轻松应对各种数据存储与管理需求,让家庭及小型办公场景下的数据管理变得前所未有的简单与高效。

专注大数据、云计算、人工智能、机器人领域技术传播 3647

把内容复制到剪切板的脚本和显示换行

function copyCode(o)    {        o.select();var js=o.createTextRange();js.execCommand("Copy");alert("广告代码已经复制到剪贴板!");    }                       http://www.168.cn/"> src="http://www.168.cn/Ima

goodyatou的专栏 3256

Vue项目实战:海康WebControl插件从安装到预览功能全流程(附RSA加密避坑指南)

本文详细介绍了在Vue项目中集成海康威视WebControl插件的全流程,从环境准备、插件部署到核心功能实现。重点解析了使用JS_RequestInterface获取RSA公钥并进行加密参数初始化的关键步骤与常见避坑指南,帮助开发者高效完成监控视频预览功能的开发与调试。

linux6sysadmin的博客 1227

vc++之剪贴板通信实例

vc++之剪贴板通信实例

akdjhf的博客 272

b站up“麦辣翅翅”《YOLOv8修改损失函数》问题解决RuntimeError: The size of tensor a (4) must match the size of tensor

b站up“麦辣翅翅”《YOLOv8修改损失函数》问题解决RuntimeError: The size of tensor a (4) must match the size of tensor ;TypeError: bbox_iou() got an unexpected keyword argument 'xywh‘

weixin_68331871的博客 3020

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

wyzlwyzl的专栏 802

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC++学习6:进程通信

一 剪贴板 1 函数接口 // 打开剪贴板 BOOL OpenClipboard( HWND hWndNewOwner ); // 清空剪贴板 BOOL EmptyClipboard(void); // 分配内存对象 int GlobalAlloc(int flags, int size); // 加锁内存对象 int GlobalLock(int handle); // 解锁内存对象 bool globalUnLock(int handle); // 关闭剪贴板 BOOL CloseClipboar

字节跳动 391

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 对话框数据交换和验证机制
下一篇: 剪贴板通信实例
oceanlee2
博客等级 码龄18年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值