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

Вниз

Отлов копирования (любыми способами)   Найти похожие ветки 

 
КВАНТ   (2006-12-15 23:31) [0]

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


 
Джо ©   (2006-12-15 23:33) [1]

RegisterClipboardViewer


 
Джо ©   (2006-12-15 23:35) [2]

Пардон, SetClipboardViewer.


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

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


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

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


 
Джо ©   (2006-12-15 23:40) [5]

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

Нет.


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

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


 
Джо ©   (2006-12-15 23:49) [7]

> [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.



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
2-1166211592
kolj
2006-12-15 22:39
2007.01.07
ShellExecute


2-1166381023
allrussia
2006-12-17 21:43
2007.01.07
Как и можно ли создать таблицу в таблице?


15-1166539412
ocean
2006-12-19 17:43
2007.01.07
Отменить установку IE7


15-1166204561
Ламот
2006-12-15 20:42
2007.01.07
Вопрос по экселю...


15-1166076363
Tab
2006-12-14 09:06
2007.01.07
RX Library