Как работать правильно с буфером обмена?
Ghbdtn в Привет.
Я поставил ловушку, она нормально работает, нормально берет текст с буфера(что меня очень удивило т.к тот код я написал случайно), нормально перекодирует, а в буфер не посылает. Верней посылает,но только в окне Visuala, даже если запускаю ехе-файл. А допустим из Worda не работает.
Само посылание происходит в длл-ке
Код:
BOOL PutTextIntoClipboard(char* p_String)
{if (OpenClipboard(NULL))
{HGLOBAL l_MemoryForClipboardBuff = ::GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT, strlen(p_String) + 1); //it's unclear why a byte more is needed
if (!l_MemoryForClipboardBuff) return false;
BYTE* l_MemoryForClipboard = (BYTE*)::GlobalLock(l_MemoryForClipboardBuff);
memcpy(l_MemoryForClipboard, p_String, strlen(p_String));
::GlobalUnlock(l_MemoryForClipboard);
SetClipboardData(CF_TEXT, l_MemoryForClipboardBuff);
CloseClipboard();
return true;
}
return false;
}
Теперь вопрос, как заставить программу выводить кириллицу, потому что она выводит ?????.
Цитата:
Originally posted by offslinker
У меня была одна маленькая ошибка я не очищал буфер.
Теперь вопрос, как заставить программу выводить кириллицу, потому что она выводит ?????.
У меня была одна маленькая ошибка я не очищал буфер.
Теперь вопрос, как заставить программу выводить кириллицу, потому что она выводит ?????.
Это надо менять кодировку... Попробуй в UNICODE строки пересылать... Я сам не делал, но по идее в UNICODE все должно работать.
Но если добавлять русскую букву все равно получается фигня.