Я бы делал на винапи все сразу. Пример на плюсах:
Код:
if(OpenClipboard(0))
{
HGLOBAL hgBuffer;
wchar_t *chBuffer;
EmptyClipboard();
hgBuffer= GlobalAlloc(GMEM_DDESHARE, source.length() * 2 + 2);
chBuffer= (wchar_t *)GlobalLock(hgBuffer);
wcscpy(chBuffer, source.data());
GlobalUnlock(hgBuffer);
SetClipboardData(CF_UNICODETEXT, hgBuffer);
CloseClipboard();
}