Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как скопировать строку в буфер обмена и вставить ее в программу


Вова ©   (2012-10-13 13:09:00) 

Нужно в сторонней программе выделить строку и вставить ее в буфер обмена. Это я делаю выделяя строку и эмулируя нажатие CTRL+C, обратная операция уже вручную (CTRL+V) дает текст который я и ожидал получить. Но, мне нужно вытащить из буфера этот текст программно, чтобы присвоить переменной в моей программе. Нашел такую вот процедуру:


function GetClipboardText(Wnd: HWND; var Str: string): boolean;
var
 hData: HGlobal;
begin
 result := true;
 if OpenClipboard(Wnd) then
 begin
   try
     hData := GetClipboardData(CF_TEXT);
     if hData <> 0 then
     begin
       try
         SetString(Str, PChAR(GlobalLock(hData)), GlobalSize(hData));
       finally
         GlobalUnlock(hData);
       end;
     end
     else
       result := false;
     Str := PChAR(@Str[1]);
   finally
     CloseClipboard;
   end;
 end
 else
   result := false;
end;


Но вместо текста она возвращает кучу символов вопроса.


MBo   (2012-10-13 14:04:00) [1]

извлекай формат CF_UNICODETEXT

Кроме того, есть штатный модуль Clipbrd. Думаю, что в последних версих Дельфи AsText с юникодом должен работать (не проверял)


Вова   (2012-10-13 13:27:00) [2]

'敇䍴楬扰慯摲敔瑸'#$AB00#$ABAB#$ ABAB#$ABAB'ﺫﻮﻮﻮﻮ' или так


Наверх

Титульная страница Поиск, карта сайта Написать письмо