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

23

我仍然是一个C++新手,最近才学会了一些文件操作。我在网上查找了一些代码,但这些代码都超出了我的技能范围。是否有一种简单的方法来完成这个任务,或者是否有任何好的教程可以从基础开始解释这个问题呢?


4
在哪个操作系统上?使用哪个框架? - Georg Fritzsche
你使用的操作系统是什么? - iceaway
什么操作系统,以及在Linux的情况下是哪个剪贴板? - R. Martinho Fernandes
3
与剪贴板的交互不是(C++)语言标准的一部分。你必须使用操作系统的API函数或通常情况下使用简化的访问函数,如果你使用一个框架的话。你可以使用Qt框架,它提供了大量的教程,但你必须学习如何使用Qt。希望这能帮到你。 - Uhli
啊,我不知道它是依赖于操作系统的。我正在使用32位的Windows 7。 - user808066
使用Qt,为了实现跨平台的方式,我们可以参考https://dev59.com/SnDXa4cB1Zd3GeqP_l4f#15742175 - Ganton
5个回答

28

windows 平台下,可以查看以下API:

关于剪贴板的详细讨论可以在这里找到。显然,这个话题与操作系统密切相关。如果您使用一些框架(如MFC/ATL),通常会提供一些辅助基础设施。本回答涉及Windows的最低API级别。如果您计划使用MFC,请参考此处;如果您更喜欢ATL,请看这里


2
不要忘记 IsClipboardFormatAvailable - Dave
对于简单的 wstring 剪贴板复制,请参见 https://dev59.com/Opzha4cB1Zd3GeqPHZiD#68077157 - yu yang Jian

10

在C++中没有跨平台的方法来做到这一点。


既然我们已经了解了这一点,Felice Pollano的回答提供了Windows API, 以便您在Windows中操作剪贴板。

苹果公司提供了一个名为ClipboardViewer的示例应用程序,并提供了有关NSPasteBoard及其功能的完整参考。

至于Linux,取决于你使用的窗口管理器。


5

5
您可以使用 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;
}


无法使用bcc32编译 - Totte Karlsson

-8
如果你正在寻找一种简单的方法来实现这个功能:模拟键盘组合键ctrl + v,然后就完成了。在所有平台上都适用。

并非所有应用程序都支持Ctrl+C/V,即使在该组合常用于复制/粘贴的平台上也是如此。我来到这个问题的原因是因为我需要在Windows应用程序中实现 Ctrl+C/V的复制/粘贴功能。 - Stjepan Bakrac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接