:: 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;
|
При использовании материала - ссылка на сайт обязательна
|
|