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

Вниз

Перехват копирования в Clip Board   Найти похожие ветки 

 
@!!ex ©   (2008-05-20 23:29) [0]

Нужно узнать, что в буффер поместили текст и его оттуда вытащить. (Так делает Download Master. Ловит появление в буффере ссылок на файлы.)
По таймеру проверять что в буффере лежит - не очень хорошо.
Есть ли другой способ?


 
MBo ©   (2008-05-21 06:05) [1]

SetClipboardViewer


 
@!!ex ©   (2008-05-21 08:22) [2]

> [1] MBo ©   (21.05.08 06:05)

Ок. СПасибо!


 
имя   (2009-01-24 01:30) [3]

Удалено модератором


 
czuryk ©   (2009-01-24 12:31) [4]

только тебе придется побороться с временами выскакивающими собщениями Cannot open Clipboard. Я с ним долго боролся, пока не сделал такую простую вещь

nastyhappened:=false;
repeat
try
...получаем данные из клипборда...
except
nastyhappened:=true;
sleep(100);
end;
until nastyhappened=false;


способ примитивный, но очень эффективный.


 
Игорь ©   (2009-01-25 12:39) [5]

uses ClipBrd

private
 ClipboardViewer: HWND;
 procedure WMChangeCBChain(var Msg: TWMChangeCBChain); message WM_CHANGECBCHAIN;
 procedure WMDrawClipboard(var Msg: TWMDrawClipboard); message WM_DRAWCLIPBOARD;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ClipboardViewer := SetClipboardViewer(Handle);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 ChangeClipboardChain(Handle, ClipboardViewer);
end;

function GetStringFromClipboard: WideString;
var
 Data: THandle;
begin
 if not IsClipboardFormatAvailable(CF_UNICODETEXT) then
   Result := Clipboard.AsText
 else
 begin
   Clipboard.Open;
   Data := GetClipboardData(CF_UNICODETEXT);
   try
     if Data <> 0 then
       Result := PWideChar(GlobalLock(Data))
     else
       Result := "";
   finally
     if Data <> 0 then
       GlobalUnlock(Data);
     Clipboard.Close;
   end;
 end;
end;

procedure TForm1.WMChangeCBChain(var Msg: TWMChangeCBChain);
begin
 if ClipboardViewer = Msg.Remove then
   ClipboardViewer := Msg.Next;
 if Msg.Remove <> Handle then
   SendMessage(ClipboardViewer, WM_CHANGECBCHAIN, Msg.Remove, Msg.Next);
end;

procedure TForm1.WMDrawClipboard(var Msg: TWMDrawClipboard);
begin
 SendMessage(ClipboardViewer, WM_DRAWCLIPBOARD, 0, 0);
 if Clipboard.HasFormat(CF_TEXT) then
 begin
   Memo1.Text:= GetStringFromClipboard;
 end;
 Msg.Result := 0;
end;


 
имя   (2009-04-01 13:03) [6]

Удалено модератором


 
имя   (2009-04-01 13:03) [7]

Удалено модератором



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

Текущий архив: 2010.02.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
15-1261032400
Ymen
2009-12-17 09:46
2010.02.28
Орешник поломался?


2-1261892336
NewZ
2009-12-27 08:38
2010.02.28
Экземпляр класса.


6-1211183591
ivanov
2008-05-19 11:53
2010.02.28
открыватьчужие ссылки в новом окне?


15-1260923205
Kerk
2009-12-16 03:26
2010.02.28
Счетчик посещаемости


2-1261660012
Pup
2009-12-24 16:06
2010.02.28
Запуталась с integer, real, extented и т.д. =(