当前位置: 首页 > news >正文

Windows C++: 剪切板内容获取

        获取Windows用户的剪切操作是部分程序的需求,我们同样可以利用这个功能做一个小工具来记忆曾经的复制内容。

代码示例

if (OpenClipboard(nullptr)) {// 打开剪贴板HANDLE hClipboardData = GetClipboardData(CF_UNICODETEXT);// 获取剪贴板中的Unicode文本数据if (hClipboardData) {// 如果剪贴板中存在Unicode文本数据wchar_t* pwchData = static_cast<wchar_t*>(GlobalLock(hClipboardData));// 锁定内存对象以访问数据if (pwchData) {// 如果成功锁定内存对象std::wstring clipboardText(pwchData);// 将获取的剪贴板数据转换为std::wstring对象GlobalUnlock(hClipboardData);// 解锁内存对象// std::wcout << L"Clipboard text: " << clipboardText << std::endl;// 输出剪贴板文本内容到控制台,已被注释掉writeDb(clipboardText);// 将剪贴板文本传递给writeDb函数}}CloseClipboard();// 关闭剪贴板
}
  • OpenClipboard(nullptr):

    • OpenClipboard函数用于打开剪贴板以便进行操作。传递nullptr表示与当前任务相关联的剪贴板。
    • 如果成功打开剪贴板,函数返回非零值,否则返回零。
  • GetClipboardData(CF_UNICODETEXT):

    • GetClipboardData函数从剪贴板中检索数据。参数CF_UNICODETEXT表示希望获取Unicode文本数据。
    • 返回值是一个HANDLE类型的指针,指向剪贴板中的数据。
  • GlobalLock(hClipboardData):

    • GlobalLock函数用于锁定全局内存对象以获取指向数据的指针。
    • 返回值是一个指向内存对象的指针。此指针用于访问剪贴板中的实际数据。
  • std::wstring clipboardText(pwchData):

    • 构造一个std::wstring对象clipboardText,将pwchData中的数据复制到clipboardText中。
    • std::wstring是C++标准库中的宽字符字符串类。
  • GlobalUnlock(hClipboardData):

    • GlobalUnlock函数用于解锁内存对象。解锁后数据仍然存在,但指针无效。
  • writeDb(clipboardText):

    • 自定义函数writeDb用于处理剪贴板中的文本数据。在本代码中,假定writeDb函数已被定义,用于将文本写入数据库或执行其他操作。
  • CloseClipboard():

    • CloseClipboard函数用于关闭剪贴板。关闭后,其他应用程序可以访问剪贴板。

DEMO

我们可以直接监控,但是程序必须阻塞,也可以开线程来监控。

一下使我做的一个基于QT6的粘贴板记忆小工具。使用inno打包,可以直接安装在机器上:

 GitHub - bowenliu1996/ClipBoardMemory: Paste board memory capture

相关文章:

Windows C++: 剪切板内容获取

获取Windows用户的剪切操作是部分程序的需求&#xff0c;我们同样可以利用这个功能做一个小工具来记忆曾经的复制内容。 代码示例 if (OpenClipboard(nullptr)) {// 打开剪贴板HANDLE hClipboardData GetClipboardData(CF_UNICODETEXT);// 获取剪贴板中的Unicode文本数据if …...

1panel运维面板

文章目录 引言I 安装防火墙II 借助运维面板1panel运维面板安装nacos 引言 在 SSH 终端输入以下命令来查看面板入口: 1pctl user-info 提示&#xff1a;修改密码可执行命令&#xff1a;1pctl update password I 安装防火墙 https://1panel.cn/docs/user_manual/hosts/firewall…...

人工智能GPT-4o?

对比分析 在讨论GPT-4o时&#xff0c;我们首先需要了解其前身&#xff0c;即GPT-4&#xff0c;以及其之前的版本。GPT系列从GPT-1到GPT-4经历了多次迭代&#xff0c;每一次都带来了显著的进步。 GPT-4 vs GPT-4o&#xff1a; 1. **参数规模&#xff1a;** GPT-4o在参数规模上…...

python之语法糖

一.语法糖 语法糖不是糖,而是编程语言中的某些特殊写法,这些写法让书写起来更加简洁,容易理解,因此被叫做语法糖 二.语法糖分类 数字分隔符 a 10_0000_0000交换变量值 a 1;b 2 a,b b,a连续比较式 a 90 if 80<a<100: print(‘优秀’)字符串乘法 a ‘_’*10列表拼…...

纷享销客海外合规观点与方案:个人隐私数据保护与数据出入境

出海&#xff0c;已不再是企业的“备胎”&#xff0c;而是必须面对的“大考”&#xff01;在这个全球化的大潮中&#xff0c;有的企业乘风破浪&#xff0c;勇攀高峰&#xff0c;也有的企业在异国他乡遭遇了“水土不服”。 面对“要么出海&#xff0c;要么出局”的抉择&#xf…...

公司面试题总结(四)

19.请解释什么是事件代理&#xff0c;应用场景 ⚫ 事件流的都会经过三个阶段&#xff1a; 捕获阶段 -> 目标阶段 -> 冒泡阶段&#xff0c;而事件委托就是 在冒泡阶段完成 ⚫ 事件委托&#xff0c;会把一个或者一组元素的事件委托到它的父层或者更外层元素上&#xf…...

守护山川,联通希望 —— 北斗户外应急呼叫柱:野外安全的守护神

在大自然的怀抱中&#xff0c;每一次探险和巡检都是对未知的挑战&#xff0c;也是对安全的考验。北斗户外应急呼叫柱&#xff0c;以科技创新为基石&#xff0c;致力于在最偏远、最危险的环境中搭建起生命的桥梁&#xff0c;确保每一次求救都能被听见&#xff0c;每一处危机都能…...

使用canvas制作一个无人机旋转特效

​ 使用HTML5的Canvas API来制作一个无人机旋转特效。这个特效将包括一个无人机图标&#xff08;你可以使用任何你喜欢的图标&#xff09;&#xff0c;它会在一个固定的位置旋转。 首先&#xff0c;我们需要创建一个HTML文件&#xff0c;然后在其中添加一个canvas元素。canvas…...

感受风的速度~2024COSP上海国际户外展为您的骑行之旅锦上添花

夏天已经到来 你是在家里宅着 还是出去晒太阳呢 若是还没抉择好 不如来一场畅快淋漓的追风之旅 抬头可见蓝天白云 低头便是美丽风景 无论是在凉亭闲聊的人们 还是竞相绽放的花朵 每一个场景都令人难忘 骑累了 就到附近的座椅上小憩一番 不用刻意追求速度 尽享“慢…...

冲12分top刊|乳腺癌单细胞细分亚型的正确打开方式

说在前面 学习一下一篇自测数据工作量叠满的单细胞文章&#xff0c;也算是多组学的了&#xff0c;bulkRNAscRNA&#xff0c;还有个伪RNA。 整体是一个单细胞分小群的研究思路&#xff0c;分出三种上皮细胞亚群&#xff08;BM、LP、ML&#xff09;&#xff0c;在功能、免疫、预…...

1-Maven-settings配置

1-Maven-settings配置 整理下Maven工具的使用。 【本地仓库、私服、镜像仓库、远程仓库、中央仓库】 本文基于阅读其他博客和对公司Maven配置的学习整理出来的。希望通过本此学习能对Maven有个整体性的掌控。 顺序&#xff1a;profile.repository > pom文件中的repository &…...

使用服务器搭建个人图床

前置条件 云服务器picGo软件,下载地址开始搭建 发布站点 该步骤不一一说明,主要说明搭建图床的步骤。 可以直接使用nginx或者宝塔面板,发布一个静态资源的文件夹。 假如我发布的文件路径是/www/img,访问地址是http://cc.cc.cc(没有域名ip地址也行) 在img下建立两个文件夹…...

探索 doc 和 docx 文件格式的区别

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…...

kettle学习(利用jsonPath定位,json文件转换)

kettle学习&#xff08;利用jsonPath定位&#xff0c;json文件转换&#xff09; 于数据处理的广袤天地间&#xff0c;我们时常需应对各类繁杂状况与各式格式。Kettle 作为极具威力的数据集成利器&#xff0c;赋予了我们诸多功能与无限可能此次博客里&#xff0c;我们将重点投向…...

选到哪里看命

srand()、rand() srand(static_cast<unsigned int>(time(nullptr))) 是 C 中用于初始化随机数生成器&#xff08;Random Number Generator, RNG&#xff09;的一个常用语句。srand 函数是 C 标准库 <cstdlib> 中的一部分&#xff0c;用于设置随机数发生器的种子值…...

MyBatis插件机制介绍与原理

插件简介 什么是插件 插件是一种软件组件&#xff0c;可以在另一个软件程序中添加功能或特性。插件通常被设计成可以 随时添加或删除 的&#xff0c;而不影响 主程序 的功能。插件可以 扩展 软件程序的功能&#xff0c;这让用户可以根据自己的需求定制软件&#xff0c;提高工作…...

[每日一练]利用.str.len()布尔值查询实现字数需求

该题目来源于力扣&#xff1a; 1683. 无效的推文 - 力扣&#xff08;LeetCode&#xff09; 题目要求&#xff1a; 表&#xff1a;Tweets ------------------------- | Column Name | Type | ------------------------- | tweet_id | int | | content …...

Post Microsoft Build and AI Day 北京开发者日

Microsoft Build 开发者大会 Microsoft Build 开发者大会是微软每年一次的开发者技术盛会&#xff0c;旨在向全球开发者展示微软最新的技术、产品和服务。 刚刚过去的 2024 Microsoft Build 开发者大会围绕 Copilot、生成式 AI、应用程序安全、云平台、低代码等多个技术方向&a…...

Qt-Advanced-Docking-System的学习

Qt5.12实现Visual Studio 2019 拖拽式Dock面板-Qt-Advanced-Docking-System_c_saide6000-GitCode 开源社区 (csdn.net) 我使用的是Qt5.5.0 开始&#xff0c;我下载的是最新版的源码&#xff1a;4.1版本 但是&#xff0c;打开ads.pro工程文件&#xff0c;无法编译成功。 然后…...

STM32定时器输出pwm的几种模式

目录 定时器 输出脉冲模式&#xff1a; PWM模式&#xff08;PWM Mode&#xff09; 输出比较模式&#xff08;Output Compare Mode&#xff09; 总结 占空比&#xff1a; 输出比较模式与占空比 PWM模式与占空比 输出比较模式与PWM模式的结合 输出比较模式实例&#xf…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...