Пример получения данных и отправки данных в буфер обмена C++

CStringW getClipboard()
{
    CStringW strData;

    if (OpenClipboard(NULL))
    {
        HANDLE hClipboardData = GetClipboardData(CF_UNICODETEXT);
        if (hClipboardData)
        {
            WCHAR *pchData = (WCHAR*) GlobalLock(hClipboardData);
            if (pchData)
            {
                strData = pchData;
                GlobalUnlock(hClipboardData);
            }
        }
        CloseClipboard();
    }
    return strData;
}

bool setClipboard(CStringW textToclipboard)
{
    bool success = true;

    if (OpenClipboard(NULL))
    {
        EmptyClipboard();
        size_t size = (textToclipboard.GetLength()+1) * sizeof(WCHAR);
        HGLOBAL hClipboardData = GlobalAlloc(NULL, size);
        if (hClipboardData)
        {
            WCHAR* pchData = (WCHAR*) GlobalLock(hClipboardData);
            if (pchData)
            {
                memcpy(pchData, (WCHAR*) textToclipboard.GetString(), size);
                GlobalUnlock(hClipboardData);
                SetClipboardData(CF_UNICODETEXT, hClipboardData);
            }
        }
        CloseClipboard();
    }
    return success;
}

источник: stackoverflow.com/questions/15362859/getclipboarddata-cf-unicodetext