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

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

Буфер обмена [D7, WinXP]


Calibr ©   (2006-07-26 21:54:00) 

Как определить что пользователь вставляет информацию из буфера обмена! Не важно куда он вставляет главное отловить это событие и перекрыть своим событием?


Handle   (2006-07-27 04:18:00) [1]

private
   FNextClipboardViewer: HWND;
    procedure WMChangeCBChain(var Msg : TWMChangeCBChain); message WM_CHANGECBCHAIN;
    procedure WMDrawClipboard(var Msg : TWMDrawClipboard); message WM_DRAWCLIPBOARD;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMChangeCBChain(var Msg : TWMChangeCBChain);
begin
  inherited;
  Msg.Result := 0;
  if Msg.Remove = FNextClipboardViewer then
    FNextClipboardViewer := Msg.Next
  else
    SendMessage(FNextClipboardViewer, WM_CHANGECBCHAIN, Msg.Remove, Msg.Next);
end;

procedure TForm1.WMDrawClipboard(var Msg : TWMDrawClipboard);
begin
  inherited;
  try
     ShowMessage('Буфер изменился');
  finally
    SendMessage(FNextClipboardViewer, WM_DRAWCLIPBOARD, 0, 0);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FNextClipboardViewer := SetClipboardViewer(Handle);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if FNextClipboardViewer <> 0 then
  begin
    ChangeClipboardChain(Handle, FNextClipboardViewer);
    FNextClipboardViewer := 0;
  end;
end;


SergProger   (2006-07-27 03:29:00) [2]

Посмотри, если в буфере находится то же самое, что и вставляется, тогда отмени процедуру.


PSPF2003   (2006-07-26 22:02:00) [3]

Хук


Наверх

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