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

问题描述 投票:0回答:3

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

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

c++ clipboard copy-paste
3个回答
5
投票

SetClipboardData 应该可以处理它。

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

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

编辑

这将从剪贴板中获取数据并将该数据返回到

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;
}

1
投票

对于跨平台解决方案,您可以使用像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";
}

© www.soinside.com 2019 - 2024. All rights reserved.