В продолжение поста про ссылки вида clip:text. Внимательный читатель помнит, что я не смог найти программку, которая брала бы строку параметром - все только с stdin работают. Черезж#пное решение меня достало, черное мелькающее окошко консоли раздражает, а иногда имеет гадкое свойство подвисать секунды на две.
Накатал программку все таки:
Это моя первая программа на си лет за пять, и первая в жизни, где работа с буфером обмена API функциями. Если есть критика - буду рад выслушать :)
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hpi, LPSTR cmdline, int ss) {
// выделяем место под строку в куче
HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, strlen(cmdline)+1);
// выделяем место под локаль в куче
HGLOBAL hglbData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,4);
// если на что-то не хватило памяти - выходим
if (hglbCopy == NULL || hglbData == NULL) return 1;
DWORD CodePage=0x419; // локаль cp1251, для русского текста
if (!OpenClipboard(NULL)) return 2; // открываем буфер
if (!EmptyClipboard()) return 3; // чистим буфер
// пихаем значение локали в память
memcpy((char *)GlobalLock(hglbData), (const void *)&CodePage, 4);
GlobalUnlock(hglbData);
// пишем в буфер локаль (иначе запишет в локали текущего потока)
if (!SetClipboardData(CF_LOCALE, hglbData)) return 4;
// пихаем строку в память
strcpy((char *)GlobalLock(hglbCopy), cmdline);
GlobalUnlock(hglbCopy);
// пишем входную строку в буфер
if (!SetClipboardData(CF_TEXT, hglbCopy)) return 5;
CloseClipboard(); // закрываем буфер
return 0;
}
Сим постом торжественно открываю всякие технические записки здесь, для которых были мысли выделить отдельный блог, но потом решил, что нафик-нафик :)
skip to main |
skip to sidebar
Creo que puedo decir sin temor a equivocarme que nadie entiende la mecánica cuántica (Rychard Phillips Feynman)
буфер обмена
archivo
labels
- action (3)
- anime (3)
- bangkok (7)
- c++ (2)
- code (2)
- full moon party (1)
- fun (4)
- japan (22)
- krabi (1)
- kuala lumpur (1)
- links (3)
- malaysia (2)
- me (4)
- opera (2)
- phangan (1)
- phatthaya (1)
- phi-phi (1)
- photos (12)
- phuket (2)
- putrajaya (1)
- roof (3)
- samui (1)
- similan (1)
- stories (2)
- tech (3)
- texts (2)
- thailand (13)
- thoughts (6)
2 comentario:
А куда ты константы возвращаешь?
мм.. не понял? ты о чем?
Publicar un comentario