如何在 C++ 中将文本复制到剪贴板?

how to copy text to the clipborad in c++?

我是 c++ 的新程序员,我不明白如何像在任何其他带有文本的程序中一样使用剪贴板进行复制和粘贴。请举个例子?

我正在使用 Code::Blocks 16.01 MinGW32 g++ windows 10.

SetClipboardData 应该处理。

glob = GlobalAlloc(GMEM_FIXED,32);
memcpy(glob,"it works",9);

OpenClipboard(hWnd);
EmptyClipboard();
SetClipboardData(CF_TEXT,glob);
CloseClipboard();

编辑

这将从剪贴板中获取数据并return string中的数据。

std::string GetClipboardText()
{
    OpenClipboard(nullptr);
    HANDLE hData = GetClipboardData(CF_TEXT);

    char * pszText = static_cast<char*>( GlobalLock(hData) );
    std::string text( pszText );

    GlobalUnlock( hData );
    CloseClipboard();

    return text;
}

对于 cross-platform 解决方案,您可以使用像 ClipboardXX 这样的库。

用法示例:

#include "clipboard.hpp"
#include <string>

int main()
{
    clipboardxx::clipboard clipboard;

    // copy
    clipboard << "text you wanna copy";

    // paste
    std::string paste_text;
    clipboard >> paste_text;
}

对于仅 Windows 的软件来说,这可能更可取,因为现代 C++ 比普通的旧 Windows API.

更易于使用

另一个有用的库可能是 clip,但我自己没有测试它。

用法示例:

#include "clip.h"
#include <iostream>

int main()
{
  clip::set_text("Hello World");

  std::string value;
  clip::get_text(value);
  std::cout << value << "\n";
}