![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как скопировать строку в буфер обмена и вставить ее в программу
Вова © (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'ﺫﻮﻮﻮﻮ' или так