![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать момент копирования текста в буфер обмена ?
HWND © (2006-01-17 22:02:00)Как узнать момент копирования текста в буфер обмена ?(хендел окна известен)
И ещё как получить выделенный текст в другом окне?
Rouse_ (2006-01-18 15:01: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.
> А как получить выделенный текст из другого окна?
Выделить буффер и послать ему WM_GETTEXT
Fay (2006-01-18 06:53:00) [2]2 HWND (18.01.06 2:21) [2]
А где обработкаWM_CHANGECBCHAIN?
HWND (2006-01-18 02:21:00) [3]Спасибо, это я сделал:
private
NH:HWND;
procedure WMCOPY(var Message: TMessage);message WM_DRAWCLIPBOARD;
uses clipbrd;
procedure TForm1.WMCOPY(var Message: TMessage);
begin
beep;
if Clipboard.HasFormat(CF_TEXT) then Caption:= Clipboard.AsText
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
NH:= SetClipboardViewer(Form1.Handle);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ChangeClipboardChain(Form1.Handle,NH);
end;
А как получить выделенный текст из другого окна?
Rouse_ (2006-01-17 22:09:00) [4]SetClipboardViewer