Недавно добавленные исходники

•  TDictionary Custom Sort  538

•  Fast Watermark Sources  903

•  3D Designer  1 830

•  Sik Screen Capture  1 478

•  Patch Maker  1 486

•  Айболит (remote control)  1 410

•  ListBox Drag & Drop  1 177

•  Доска для игры Реверси  21 920

•  Графические эффекты  1 357

•  Рисование по маске  1 296

•  Перетаскивание изображений  1 096

•  Canvas Drawing  971

•  Рисование Луны  814

•  Поворот изображения  771

•  Рисование стержней  815

•  Paint on Shape  493

•  Генератор кроссвордов  762

•  Головоломка Paletto  667

•  Теорема Монжа об окружностях  855

•  Пазл Numbrix  619

•  Заборы и коммивояжеры  849

•  Игра HIP  557

•  Игра Go (Го)  527

•  Симулятор лифта  549

•  Программа укладки плитки  509

•  Генератор лабиринта  565

•  Проверка числового ввода  524

•  HEX View  600

•  Физический маятник  528

•  Задача коммивояжера  560

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Hook на буфер обмена



Оформил: DeeCo

{ 
  *Just create a new form and call it ClipFormats. 
  *Drop a TButton and call it btnUpdate. 
  *Drop a TListBox and call it lbFormats. 

  Then just add the code below and hook up all the event handlers. 
  All it does is display all the formats currently on the clipboard and 
  updates as soon as the clipboard changes. 


  * Erstelle eine Neue Form und nenne sie ClipFormats. 
  * Plaziere einen TButton auf ihr und nenne ihn btnUpdate. 
  * Plaziere eine TListBox auf ihr und nenne sie lbFormats. 

  Dann fuge den untenstehenden Code hinzu und linke alle Ereignis-Prozedure. 
  Es zeigt dann alle Formate an, welche sich momentan in der Zwischenablage 
  befinden und wird aktualisiert, sobald sich der Inhalt der Zwischenablage  andert. 
}

 unit DynaClip;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ExtCtrls;

 type
   TClipFormats = class(TForm)
     btnUpdate: TButton;
     lbFormats: TListBox;
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure btnUpdateClick(Sender: TObject);
   private
     { Private declarations }
     NextWindow: HWND;
     procedure WMChangeCBChain(var Message: TWMChangeCBChain); message
     WM_CHANGECBCHAIN;
     procedure WMDrawClipboard(var Message: TWMDrawClipboard); message
     WM_DRAWCLIPBOARD;
   public
     { Public declarations }
   end;

 var
   ClipFormats: TClipFormats;

 implementation

 {$R *.DFM}

 procedure TMDIChildClipFormats.FormCreate(Sender: TObject);
 begin
   NextWindow := SetClipboardViewer(Handle);
 end;

 procedure TClipFormats.FormDestroy(Sender: TObject);
 begin
   ChangeClipboardChain(Handle, NextWindow);
 end;

 procedure TClipFormats.WMChangeCBChain(var Message: TWMChangeCBChain);
 begin
   with Message do
    begin
     if (Remove = NextWindow) then
      begin
       NextWindow := Next;
     end
     else
      begin
       SendMessage(NextWindow, WM_CHANGECBCHAIN, Remove, Next);
     end;
   end;
 end;

 procedure TClipFormats.WMDrawClipboard(var Message: TWMDrawClipboard);
 begin
   btnUpdate.Click;
   SendMessage(NextWindow, WM_DRAWCLIPBOARD, 0, 0);
 end;

 procedure TClipFormats.btnUpdateClick(Sender: TObject);
 const
   PreDefinedFormats: array[1..16] of string = ('CF_TEXT',
     'CF_BITMAP',
     'CF_METAFILEPICT',
     'CF_SYLK',
     'CF_DIF',
     'CF_TIFF',
     'CF_OEMTEXT',
     'CF_DIB',
     'CF_PALETTE',
     'CF_PENDATA',
     'CF_RIFF',
     'CF_WAVE',
     'CF_UNICODETEXT',
     'CF_ENHMETAFILE',
     'CF_HDROP',
     'CF_LOCALE');
 var
   ClipFormat: TClipFormat;
   szBuffer: array[0..511] of Char;
   FormatID: string;
 begin
   if not OpenClipboard(Handle) then Exit;
   try
     lbFormats.Items.BeginUpdate;
     try
       lbFormats.Items.Clear;

       ClipFormat := EnumClipboardFormats(0);
       while (ClipFormat <> 0) do
        begin
         if (ClipFormat in [1..16]) then
          begin
           FormatID := PreDefinedFormats[ClipFormat];
         end
         else
          begin
           GetClipboardFormatName(ClipFormat, szBuffer, SizeOf(szBuffer));
           FormatID := string(szBuffer);
         end;
         lbFormats.Items.Add(Format('%s [%d]', [FormatID, ClipFormat]));
         ClipFormat := EnumClipboardFormats(ClipFormat);
       end;
     finally
       lbFormats.Items.EndUpdate;
     end;
   finally
     CloseClipboard;
   end;
 end;

 end.




Похожие по теме исходники

Keyboard Drivers Hooks

Low Level Mouse Hook

Shell Hook

Wnd Hooks

 

API Hook

Keyboard Hook

Hooks Samples

Clipboard (буфер обмена)

 



Copyright © 2004-2022 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram