Добавление текста в буфер обмена без использования модуля Clipbrd
Falk0ner, вс, 06/07/2008 - 15:34.
Добавление текста в буфер обмена без использования модуля Clipbrd
{ **** UBPFD *********** by kladovka.net.ru ****
>>
Wnd - Handle окна, получающего доступ к буферу обмена, может быть Application.Handle или Form.Handle
Value - текст, помещаемый в буфер обмена
Зависимости: Windows
Автор: Dimka Maslov, <a href="mailto:mainbox@endimus.ru">mainbox@endimus.ru</a>, ICQ:148442121, Санкт-Петербург
Copyright: Dimka Maslov
Дата: 22 августа 2002 г.
********************************************** }
function SetClipboardText(Wnd: HWND; Value: string): Boolean;
var
hData: HGlobal;
pData: pointer;
Len: integer;
begin
Result:=True;
if OpenClipboard(Wnd) then begin
try
Len:=Length(Value)+1;
hData:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
try
pData:=GlobalLock(hData);
try
Move(PChar(Value)^, pData^, Len);
EmptyClipboard;
SetClipboardData(CF_Text, hData);
finally
GlobalUnlock(hData);
end;
except
GlobalFree(hData);
raise
end;
finally
CloseClipboard;
end;
end else Result:=False;
end;
>>
Wnd - Handle окна, получающего доступ к буферу обмена, может быть Application.Handle или Form.Handle
Value - текст, помещаемый в буфер обмена
Зависимости: Windows
Автор: Dimka Maslov, <a href="mailto:mainbox@endimus.ru">mainbox@endimus.ru</a>, ICQ:148442121, Санкт-Петербург
Copyright: Dimka Maslov
Дата: 22 августа 2002 г.
********************************************** }
function SetClipboardText(Wnd: HWND; Value: string): Boolean;
var
hData: HGlobal;
pData: pointer;
Len: integer;
begin
Result:=True;
if OpenClipboard(Wnd) then begin
try
Len:=Length(Value)+1;
hData:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
try
pData:=GlobalLock(hData);
try
Move(PChar(Value)^, pData^, Len);
EmptyClipboard;
SetClipboardData(CF_Text, hData);
finally
GlobalUnlock(hData);
end;
except
GlobalFree(hData);
raise
end;
finally
CloseClipboard;
end;
end else Result:=False;
end;
Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
begin
SetClipboardText(Handle, 'qwerty');
end;
begin
SetClipboardText(Handle, 'qwerty');
end;
Отправить комментарий