|
:: MVP ::
|
|
|
:: RSS ::
|
|
|
Как скопировать текст в буфер обмена без использования модуля Clipbrd?
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;
|
Как получить текст из буфера обмена без использования модуля Clipbrd?
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;
procedure TForm1.Button1Click(Sender: TObject);
var
Str: string;
begin
GetClipboardText(Handle, Str);
ShowMessage(Str);
end;
|
Как получить имена файлов из буфера обмена?
uses
ClipBrd, ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
var
f: THandle;
Buffer: array [0..MAX_PATH] of Char;
i, numFiles: Integer;
begin
Clipboard.Open;
try
f := Clipboard.GetAsHandle(CF_HDROP) ;
if f <> 0 then
begin
numFiles := DragQueryFile(f, $FFFFFFFF, nil, 0);
Memo1.Clear;
for i := 0 to numFiles-1 do
begin
Buffer[0] := #0;
DragQueryFile(f, i, Buffer, SizeOf(Buffer));
Memo1.Lines.Add(Buffer);
end;
end;
finally
Clipboard.Close;
end;
end;
|
Как скопировать текст в буфер обмена?
uses
Clipbrd;
type
TClipboardAccess = class(TClipboard);
implementation
procedure CopyToClipboard(const aText: string);
var
wText: WideString;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
wText := aText;
TClipboardAccess(Clipboard).SetBuffer(CF_UNICODETEXT, wText[1], (Length(wText) + 1) * 2);
end
else
Clipboard.AsText := aText;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyToClipboard('Произвольный текст');
end;
|
|
При использовании материала - ссылка на сайт обязательна
|
|