Форум: "Основная";
Текущий архив: 2010.02.28;
Скачать: [xml.tar.bz2];
ВнизПерехват копирования в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c