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

Вниз

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

 
Poof-poof ©   (2003-11-05 22:57) [0]

Буду краток:
1. Как организовать слежение за буфером обмена? (код)
2. Как определить, что в буфер обмена поступило изображение (скриншот)??? (код)
3. Как этот самый скришот вытащить из буфера обмена и перевести этот формат в TBitmap? (код)


 
Poof-poof ©   (2003-11-06 00:33) [1]

Ребят, ну помогите плиззз...зз...з... :)


 
KSergey ©   (2003-11-06 08:14) [2]

3.См. спарвку по TBimMap.Assign (и Clibboard.Assign)
1.Бувально вчера в каком-то факе видел... А почитайте ка и вы разные - полезно, поверьте. Там какое-то сообщение регистрировалось помнится.
2.Как только будет решена задача п.1 - см. ClipBoard.HasFormat

ЗЫ
Вы книги читать пробовали?


 
Романов Р.В. ©   (2003-11-06 08:39) [3]

1.
McSimm © (10.07.02 10:06)
Есть техника, позволяющая отслеживать изменения Clipboard. Для этого надо
1. Зарегистрировать свое окно в цепочке ClipboardChain
2. Выполнять необходимые действия по передаче сообщений по цепочке
3. Удалить свое окно из цепочки.

Пример :
procedure TForm1.FormCreate(Sender: TObject);
begin
// Регистрируемся и запоминаем соседа
Hn := SetClipboardViewer(Handle)
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Удаляем себя из списка
ChangeClipboardChain(Handle, Hn);
end;
procedure TForm1.ChangeCBChain(var Message: TWMChangeCBChain);
begin
// Обрабатываем событие изменения очереди
if Message.Remove = Hn then Hn := Message.Next
else
if Hn <> 0 then // передаем по цепочке
SendMessage(Hn, Message.Msg, Message.Remove, Message.Next);
Message.Result := 0
end;
procedure TForm1.DrawClipboard(var Message: TWMDrawClipboard);
begin
//Обрабатываем изменения в Clipboard
Button1.Enabled := IsClipboardFormatAvailable(CF_TEXT);
if Hn <> 0 then // передаем по цепочке
SendMessage(Hn, Message.Msg, 0, 0)
end;


2. CF_BITMAP

3. TPicture.LoadFromClipboardFormat


 
REA ©   (2003-11-06 09:39) [4]

1) OnIdle например
2) HasFormat, class function TPicture.SupportsClipboardFormat
3) Picture.Assign(Clipboard) and
Bitmap.Assign(Clipboard) are also supported to retrieve the contents of the clipboard.


 
Poof-poof ©   (2003-11-06 17:48) [5]

Спасибо всем кто пытался помочь, но я чёто-то запутался...
Мне нужно что-бы если буфер обмена изменился - то вызывалась бы определённая процедура...
Вот нашол следующий код:

unit ClipboardViewer;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;

type

TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FNextViewerHandle : THandle;
procedure WMDrawClipboard (var message : TMessage);
message WM_DRAWCLIPBOARD;
procedure WMChangeCBCHain (var message : TMessage);
message WM_CHANGECBCHAIN;
public
end;
var

Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin

// Проверяем работоспособность функции.
// При невозможности просмотра буфера обмена
// функция возвратит значение Nil.
FNextViewerHandle := SetClipboardViewer(Handle);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin

// Восстанавливаем цепочки.
ChangeClipboardChain(Handle, FNextViewerHandle);
end;

procedure TForm1.WMDrawClipboard (var message : TMessage);
begin
// Вызывается при любом изменении содержимого буфера обмена

message.Result := SendMessage(WM_DRAWCLIPBOARD, FNextViewerHandle, 0, 0);
end;

procedure TForm1.WMChangeCBCHain (var message : TMessage);
begin

// Вызывается при любом изменении цепочек буфера обмена.
if message.wParam = FNextViewerHandle then begin
// Удаляем следующую цепочку просмотра. Корректируем внутреннюю переменную.
FNextViewerHandle := message.lParam;
// Возвращаем 0 чтобы указать, что сообщение было обработано
message.Result := 0;
end else begin
// Передаем сообщение следующему окну в цепочке.
message.Result := SendMessage(FNextViewerHandle, WM_CHANGECBCHAIN,
message.wParam, message.lParam);

end;
end;

end.

По идее он может следить за буфером обмена...
Как бы мне его скоротить так, что-бы достигнуть вышеописанных задач? :)


 
Poof-poof ©   (2003-11-06 23:18) [6]

Ну помогитееееееее!!!!!!! :)))


 
Ломброзо ©   (2003-11-07 00:51) [7]

Вариант для ленивых - скачать JCL/JVCL и положить на форму требуемый компонент

Вариант для неленивых - полазить по MSDN и поизучать метод OleGetClipboard и интерфейс IDataObject, в особенности методы DAdvise и DUnadvise (привязка к событиям буфера обмена)


 
Poof-poof ©   (2003-11-07 01:35) [8]

Я ленивый! :)
Где скачаеть этот JCL/JVCL?


 
DJ_Sedoy ©   (2003-11-07 02:06) [9]

Гм.... сорри, конечно, но не проще ли в это системе ловить?


 
Poof-poof ©   (2003-11-07 02:16) [10]

:) Ну что же делать?


 
Poof-poof ©   (2003-11-07 14:32) [11]

Помогитееее!!!!!!


 
Poof-poof ©   (2003-11-07 16:42) [12]

Блин!!!!!!!!!!!!


 
none1   (2003-11-07 18:01) [13]

PBClipBoard v.1.20.00.00 FWS 4 Kb 03.01.03
By Poul Bak. PBClipBoard is a small component that monitors the clipboard. It has only one property, the "Onchange" event, that triggers whenever the contents of the clipboard changes. Use it to automatically enable/disable "Paste"-buttons or to view the contents of the clipboard.
How to use: Drop a PBClipBoard component on the form. Write an Onchange event-handler to enable/disable the paste buttons. That"s all.

Fully functional
Source: Included

http://www.torry.net/vcl/system/other/pbclip.zip


 
Poof-poof ©   (2003-11-08 00:52) [14]

Огромное спасибо!!!!!!!! Спасибо! Спасибо!!! Yes!!! Ага...Йе!! Сэнькс!



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

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

Наверх




Память: 0.5 MB
Время: 0.028 c
1-56762
GIL
2003-11-06 14:29
2003.11.17
минимизация окна


8-56780
tlwlite
2003-07-20 19:53
2003.11.17
битмап в памяти...


1-56688
han-bratan
2003-11-07 14:41
2003.11.17
BrowseForFolder


1-56675
Daaan
2003-11-05 09:49
2003.11.17
Ошибка регистрации


8-56779
Hatawa
2003-07-20 18:17
2003.11.17
Почему StretchBlt при использовании портит рисунок?