Главная страница
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.034 c
15-1166099653
sergey888
2006-12-14 15:34
2007.01.07
Конец эпохи Windows и слежка за пользователями мобильников


15-1164905754
oldman
2006-11-30 19:55
2007.01.07
Игрушка не может найти драйвера для загрузки "мультитекстур"...


15-1166472099
PHPDeveloper
2006-12-18 23:01
2007.01.07
закачка файла


2-1166271668
vitv
2006-12-16 15:21
2007.01.07
Проблема с DLL


2-1166290330
anton773
2006-12-16 20:32
2007.01.07
обратиться к контролам на другой форме (.NET)