![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
clipboard
snake77 © (2005-12-14 10:29:00)Здравствуйте!
подскажите как сделать опрос clipboard на наличие в нем какой бы то нибыло информации. Япопробовал сделать в цикле, но при этом сильно грузится машина.
Я так понимаю что надо делать событийно, т.е. при появлении чегото в клибоарде должна вызываться процедурка.
у TClipboard нет эвентов, хук тоже ненайду
:(
Rouse_ (2005-12-14 10:49:00) [1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
hwndNextViewer: THandle;
procedure WMChangeCbChain(var Message: TWMChangeCBChain); message WM_CHANGECBCHAIN;
procedure WMDrawClipboard(var Message: TMessage); message WM_DRAWCLIPBOARD;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// Add the window to the clipboard viewer chain.
hwndNextViewer := SetClipboardViewer(Handle);
end;
procedure TForm1.WMChangeCbChain(var Message: TWMChangeCBChain);
begin
with Message do
begin
// If the next window is closing, repair the chain.
if Remove = hwndNextViewer then
hwndNextViewer := Next
// Otherwise, pass the message to the next link.
else
if hwndNextViewer <> 0 then
SendMessage(hwndNextViewer, Msg, Remove, Next);
end;
end;
// clipboard contents changed.
procedure TForm1.WMDrawClipboard(var Message: TMessage);
begin
// Pass the message to the next window in clipboard
// viewer chain.
with Message do
SendMessage(hwndNextViewer, Msg, WParam, LParam);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ChangeClipboardChain(Handle, hwndNextViewer);
end;
end.