備忘録

備忘録

C++でクリップボードに文字列をコピーする方法

Ⅰ. はじめに

タイトルの通り「C++クリップボードに文字列をコピーする方法」です。

Ⅱ. やり方

1. サンプルプログラムを書く
#include <Windows.h>
#include <iostream>

void copy(const wchar_t *str)
{
  auto len = (wcslen(str) + 1) * 2;
  auto hMem = reinterpret_cast<HGLOBAL>(GlobalAlloc(GHND, len));
  if (hMem == nullptr)
  {
    return;
  }

  auto pMem = reinterpret_cast<wchar_t*>(GlobalLock(hMem));
  if (pMem == nullptr)
  {
    return;
  }

  wcscpy_s(pMem, len, str);
  GlobalUnlock(hMem);
  OpenClipboard(NULL);
  EmptyClipboard();

  if (SetClipboardData(CF_UNICODETEXT, hMem) == NULL)
  {
    GlobalFree(hMem);
  }

  CloseClipboard();
}

int main()
{
  copy(L"あいうえお😊");

  return 0;
}

実行結果

省略