Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отлов копирования (любыми способами) [D7, XP]


КВАНТ ©   (2006-12-15 23:31:00) 

Здравствуйте!
I need help. 1) Мне требуется глобально отловить копирование (только текста) и любыми способами (будь то Ctrl+C или из меню).
Или: 2) на самом деле нужно при нажатии, например Ctrl+Alt+C, скопировать выделенный текст (из другой программы, т.е. глобально) и вставить его, допустим в тот же RichEdit.
Если никак с (2), то хотя бы (1).
Спасибо!


Джо   (2006-12-15 23:49:00) [1]

> [3] КВАНТ   (15.12.06 23:37)
> Спасибо, а можно небольшой примерчик?

В таком роде:

unit Unit35;

interface

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

type
 TForm35 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   FNextClipViewerHandle: Integer;
   procedure ForwardClipMsg(var Msg: TMessage);
   procedure WmDrawClipBoard (var Msg: TMessage); message WM_DRAWCLIPBOARD;
   procedure WmChangeCbChaing (var Msg: TMessage); message WM_CHANGECBCHAIN;
 public
   { Public declarations }
 end;

var
 Form35: TForm35;

implementation

{$R *.dfm}

procedure TForm35.FormCreate(Sender: TObject);
begin
 FNextClipViewerHandle := SetClipboardViewer(Handle);
 if FNextClipViewerHandle = 0 then
   RaiseLastOSError;

end;

procedure TForm35.FormDestroy(Sender: TObject);
begin
 ChangeClipboardChain(Handle,FNextClipViewerHandle);
end;

procedure TForm35.ForwardClipMsg(var Msg: TMessage);
begin
 if FNextClipViewerHandle <> 0 then
   SendMessage (FNextClipViewerHandle,Msg.Msg,Msg.WParam,Msg.LParam);
end;

procedure TForm35.WmChangeCbChaing(var Msg: TMessage);
begin
 if Msg.WParam = FNextClipViewerHandle then
   FNextClipViewerHandle := Msg.LParam
 else
   ForwardClipMsg(Msg);
end;

procedure TForm35.WmDrawClipBoard(var Msg: TMessage);
begin
 ForwardClipMsg(Msg);
 // Собственно, тут можно проверять содержимое Буфера Обмена
end;

end.


КВАНТ   (2006-12-15 23:41:00) [2]

Оч жаль.. Все равно спасиб ;)


Джо   (2006-12-15 23:40:00) [3]

>
>
> [4] КВАНТ   (15.12.06 23:38)
> А с доп. хоткеем не получится?

Нет.


КВАНТ   (2006-12-15 23:38:00) [4]

А с доп. хоткеем не получится?


КВАНТ   (2006-12-15 23:37:00) [5]

Спасибо, а можно небольшой примерчик?


Джо   (2006-12-15 23:35:00) [6]

Пардон, SetClipboardViewer.


Джо   (2006-12-15 23:33:00) [7]

RegisterClipboardViewer


Наверх

Титульная страница Поиск, карта сайта Написать письмо