Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

содержимое буфера обмена   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
14-1086083574
000
2004-06-01 13:52
2004.06.20
Помогите найти фотки!!!


14-1085981926
Vlad Oshin
2004-05-31 09:38
2004.06.20
Вчерашнему хорошему настроению :)


1-1086586867
ra4fcr
2004-06-07 09:41
2004.06.20
Формула в Excel


3-1085492325
Князев Сергей
2004-05-25 17:38
2004.06.20
FireBird 1.03.972 подключение и просмотр базы


14-1085691642
k@rt
2004-05-28 01:00
2004.06.20
Эксперты