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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
14-56810
Карелин Артем
2003-10-24 14:47
2003.11.17
Посоветуйте систему контроля версий. Дельфи.


6-56785
undersun
2003-09-19 13:50
2003.11.17
Поиск и проверка анонимных прокси


14-56854
Sha-Man
2003-10-27 14:08
2003.11.17
Тут уже спрашивали, я знаю. Про ирландскую музыку.


1-56622
Samael6
2003-11-05 11:59
2003.11.17
TreeView + Сеть Microsoft Windows


14-56887
GOOD
2003-10-26 01:05
2003.11.17
Головоломка про монеты.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский