Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
Whippi   (2002-11-25 17:36) [0]

Кто нибудь сталкивался с такой вещью?
Как это можно риализовать?
Примерчиком неподмогнете?


 
MBo   (2002-11-25 17:48) [1]

поройся по форуму, я выкладывал код сохранения содержимого clipBoard в файл и восстановления. Учти, что некоторые программы используют отложенное копирование (render), когда данные не хранятся в буфере, а поставляются по запросу


 
Whippi   (2002-11-26 08:57) [2]


> MBo © (25.11.02 17:48)
> поройся по форуму, я выкладывал код сохранения содержимого
> clipBoard в файл и восстановления. Учти, что некоторые программы
> используют отложенное копирование (render), когда данные
> не хранятся в буфере, а поставляются по запросу

Прощерстил форум на месяц назад, но увы не нашел примера. Немогли бы Вы повторить его?


 
Дмитрий К.К.   (2002-11-26 09:06) [3]

Библиотека RX

TClipboardMonitor component

This object allows for clipboard monitoring.

Once the object is created, you must supply an event handler to be warned when the clipboard contents change.


 
SottNick   (2002-11-26 09:15) [4]

message WM_CHANGECBCHAIN;
message WM_DRAWCLIPBOARD;

и конечно
SetClipboardViewer(Handle);
ChangeClipboardChain(Handle, PrevHwnd);


 
MBo   (2002-11-26 09:26) [5]

Сохранение всего содержимого буфера обмена в файл.
Сам факт изменения отслеживается с помощью указанных SottNick функций. И учти, что в момент восстановления форматы, записанные в сейве, должны быть известны (зарегистрированы) Windows

var FS:TFileStream;

procedure TForm1.bClearClick(Sender: TObject);
begin
OpenClipBoard(0);
EmptyClipboard;
CloseClipBoard;
end;

procedure TForm1.BSaveClick(Sender: TObject);
var CBF:Cardinal;
CBFList:TList;
i:Integer;
h:THandle;
p:Pointer;
CBBlockLength,Temp:Cardinal;
FS:TFileStream;
begin
if OpenClipBoard(0)then begin
CBFList:=TList.Create;
CBF:=0;
repeat
CBF:=EnumClipboardFormats(CBF);
if CBF<>0 then
CBFList.Add(pointer(CBF));
until CBF=0;
edit1.text:=IntToStr(CBFList.Count);
if CBFList.Count>0 then begin
FS:=TFileStream.Create("e:\cp.dat",fmCreate);
Temp:=CBFList.Count;
FS.Write(Temp,SizeOf(Integer));
for i:=0 to CBFList.Count-1 do begin
h:=GetClipboardData(Cardinal(CBFList[i]));
if h>0 then begin
CBBlockLength:=GlobalSize(h);
if h>0 then begin
p:=GlobalLock(h);
if p <> nil then begin
Temp:=Cardinal(CBFList[i]);
FS.Write(Temp,SizeOf(Cardinal));
FS.Write(CBBlockLength,SizeOf(Cardinal));
FS.Write(p^,CBBlockLength);
end;
GlobalUnlock(h);
end;
end;
end;
FS.Free;
end;
CBFList.Free;
CloseClipBoard;
end;
end;

procedure TForm1.bLoadClick(Sender: TObject);
var h:THandle;
p:Pointer;
CBF:Cardinal;
CBBlockLength:Cardinal;
i,CBCount:Integer;
FS:TFileStream;
begin
if OpenClipBoard(0)then begin
FS:=TFileStream.Create("e:\cp.dat",fmOpenRead);
if FS.Size=0 then Exit;
FS.Read(CBCount,sizeOf(Integer));
if CBCount=0 then Exit;
for i:=1 to CBCount do begin
FS.Read(CBF,SizeOf(Cardinal));
FS.Read(CBBlockLength,SizeOf(Cardinal));
h:=GlobalAlloc(GMEM_MOVEABLE or GMEM_SHARE or GMEM_ZEROINIT,CBBlockLength);
if h>0 then begin
p:=GlobalLock(h);
if p=nil then
GlobalFree(h)
else begin
FS.Read(p^,CBBlockLength);
GlobalUnlock(h);
SetClipboardData(CBF,h);
end;
end;
end;
FS.Free;
CloseClipBoard;
end;
end;


 
Whippi   (2002-11-26 09:36) [6]

Спасибо огромное.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-14524
Misha
2002-11-14 13:39
2002.12.05
Вопрос из Областии Объектно Орентированного Программирования


1-14480
MainKaif
2002-11-22 23:39
2002.12.05
Как сделать программу которая будет работать в фоновом режиме


3-14445
Part
2002-11-18 13:44
2002.12.05
database update


1-14664
yaav
2002-11-25 17:38
2002.12.05
русский шрифт в Win XP


14-14733
Ежик
2002-11-13 14:49
2002.12.05
Отдам ящик ПИВА в хорошие руки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский