如何在C++中从剪贴板复制/粘贴

How do you copy/paste from the clipboard in C++?

本文关键字:剪贴板 复制 粘贴 C++      更新时间:2023-10-16

我还是一个C++新手,最近才学会一些文件操作。我在网上查了一下,给出的代码远远超出了我目前的技能。有没有一种简单的方法可以做到这一点,或者有什么好的教程可以从最基本的角度解释这一点?

窗口中查看以下API:

  • OpenClipBoard
  • 空剪贴板
  • 设置剪贴板数据
  • 关闭剪贴板
  • 获取剪贴板数据

可以在这里找到广泛的讨论。显然,这个主题与操作系统密切相关。如果你使用一些框架(即MFC/ATL),你通常会找到一些辅助基础设施。此回复是指WIndows中的最低API级别。如果您计划使用MFC,请查看此处,如果您更喜欢ATL,请查看这里。

在C++中没有跨平台的方法来实现这一点


现在我们已经解决了这个问题,Felice Pollano的答案提供了Windows API,这样你就可以在Windows中操作剪贴板。

Apple提供了一个名为ClipboardViewer的示例应用程序,以及对NSPasteBoard及其提供的功能的完整引用。

至于Linux,这取决于您正在运行的窗口管理器。

如果您愿意使用Qt库,C++中有一种跨平台的方法可以做到这一点。

这里提供了一个解决方案:

https://stackoverflow.com/a/40437290/2158002

您可以使用ClipboardXX库来复制和粘贴简单文本。只需从github下载clipboardXX.hpp并将其复制到您的项目路径即可。然后以为例

#include "clipboard.hpp"
#include <string>
int main() {
    clipboardxx::clipboard clipboard;
    // copy
    clipboard << "text you wanna copy";
    // paste
    std::string paste_text;
    clipboard >> paste_text;
}

如果你正在寻找一种简单的方法来实现这一点:模拟键盘组合ctrl+v,你就完成了。在所有平台上。