Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Внизсодержимое буфера обмена Найти похожие ветки
← →
user_1 (2004-06-03 22:06) [0]Как грамотнее сохранить на время содержимое буфера обмена, а потом вернуть всё на место?
Собсно, само содержимое меня не интересует. Просто надо воспользоваться буфером.
← →
user_1 (2004-06-04 14:11) [1]Ну так что ?
← →
evvcom © (2004-06-04 14:28) [2]WinAPI help -> Clipboard Functions
← →
Rouse_ © (2004-06-04 17:21) [3]
procedure TForm1.FormCreate(Sender: TObject);
var
C: TClipboard;
begin
C := TClipboard.Create;
try
C.AsText := "qwe";
Caption := C.AsText;
finally
C.Free;
end;
end;
← →
user_1 (2004-06-04 19:07) [4]Вобщем накидал небольшой модуль, может кому пригодится.
Потом пределаю нормально, щяс времени нету.
unit AClipBoard;
interface
uses Classes,
Windows,
ClipBrd;
type TClipBoardUnit = record
AFormat : Word;
AData : TMemoryStream;
end;
type TClipBoardStore = array of TClipBoardUnit;
var Store: TClipBoardStore;
//procedure ClearStore;
function BackUpClipBoard: Boolean;
function RestoreClipBoard: Boolean;
function GetClipBoardSimpleText: String;
implementation
function GetClipBoardSimpleText: String;
begin
Result := ClipBoard.AsText;
end;
procedure ClearStore;
var
i: integer;
begin
for i:=Low(Store) to High(Store) do
begin
Store[i].AData.Free;
end;
SetLength(Store, 0);
end;
function BackUpClipBoard: Boolean;
var
i: Integer;
hBuf: THandle;
BufPtr: Pointer;
begin
Result:=true;
ClearStore;
try
SetLength(Store, ClipBoard.FormatCount);
for i:=0 to ClipBoard.FormatCount-1 do
begin
Store[i].AFormat := ClipBoard.Formats[i];
Store[i].AData := TMemoryStream.Create;
hBuf := ClipBoard.GetAsHandle(ClipBoard.Formats[i]);
BufPtr := GlobalLock(hBuf);
Store[i].AData.WriteBuffer(BufPtr^, GlobalSize(hBuf));
GlobalUnlock(hBuf);
Store[i].AData.Position := 0;
end;
except
Result:=false;
end;
end;
function RestoreClipBoard: Boolean;
var i: Integer;
hBuf: THandle;
BufPtr: Pointer;
begin
Result:=true;
try
ClipBoard.Open;
for i:=Low(Store) to High(Store) do
begin
hBuf := GlobalAlloc(GMEM_MOVEABLE, Store[i].AData.Size);
try
BufPtr := GlobalLock(hBuf);
try
Move(Store[i].AData.Memory^, BufPtr^, Store[i].AData.Size);
Clipboard.SetAsHandle(Store[i].AFormat, hBuf);
finally
GlobalUnlock(hBuf);
end;
except
GlobalFree(hBuf);
// raise;
end;
end;
ClipBoard.Close;
except
Result:=false;
end;
end;
initialization
finalization
ClearStore;
end.
← →
user_1 (2004-06-04 19:10) [5]юзать так например :
...
if BackUpClipBoard then
begin
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VkKeyScan("c"), 0, 0, 0);
keybd_event(VkKeyScan("c"), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
Sleep(20);
Caption := GetClipBoardSimpleText;
RestoreClipBoard;
end;
...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.03 c