![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как програмно записать строку в буфер обмена? [D7, WinXP]
n-neo © (2004-11-07 21:28:00)Как програмно записать строку в буфер обмена?
GuAV (2004-11-07 22:18:00) [1]default © (07.11.04 22:06) [5]
А я, дурак, велосипед изобрёл... сам переводил прример с MSDN в Delphi...
default (2004-11-07 22:06:00) [2]uses Clipbrd;
...
Clipboard.AsText := NeedString
GuAV (2004-11-07 21:46:00) [3]procedure CopyText(const S: string);
var hglbCopy: THandle; L: Cardinal;
begin
L:=Length(S)+1;
Win32Check(OpenClipboard(Application.Handle));
try
Win32Check(EmptyClipboard);
hglbCopy:=GlobalAlloc(GMEM_DDESHARE, L);
Move(PChar(S)^,GlobalLock(hglbCopy)^,L);
GlobalUnlock(hglbCopy);
SetClipboardData(CF_TEXT, hglbCopy);
finally
CloseClipboard;
end;
end;
default (2004-11-07 21:43:00) [4]или используй созданный объект Clipboard типа TClipboard
уж VCL так VCL, API лучше только там где VCL не в силах помочь
KilkennyCat (2004-11-07 21:38:00) [5]и не забыть вначале выполнить OpenClipboard, и соответственно в конце - CloseClipboard.
KilkennyCat (2004-11-07 21:35:00) [6]function SetClipboardData(Format: Word; Mem: THandle): THandle;
Format - в данном случае CF_Text
Mem - память, где данные.