CheshireCat, тоже самое, ничего не изменилось(
Добавлено через 15 минут
Ура!!! Всё, разобрался. Надо было локаль установить. Вот рабочий код:
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| void SetClipboard(std::string Str)
{
DWORD CodePage=0x419;
if(OpenClipboard(AppHandle))//открываем буфер обмена
{
HGLOBAL hgBuffer=GlobalAlloc(GMEM_DDESHARE,Str.size()+1);//выделяем память
char* chBuffer=(char*)GlobalLock(hgBuffer); //блокируем память
strcpy(chBuffer,Str.c_str());
EmptyClipboard(); //очищаем буфер
HGLOBAL Data=GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE,4); // Назначить кодовую страницу для буфера обмена
char* DataPtr=(char*)GlobalLock(Data);
memcpy(DataPtr,(const VOID*)&CodePage,4);
GlobalUnlock(Data);
SetClipboardData(CF_LOCALE,Data);
GlobalUnlock(hgBuffer);//разблокируем память
SetClipboardData(CF_TEXT, hgBuffer);//помещаем текст в буфер обмена
//SetClipboardData(CF_LOCALE, (HANDLE)0x409);
CloseClipboard(); //закрываем буфер обмена
}
} |
|
Идею потырил
отсюда.