Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 14:03   #1
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию Работа с буфером обмена

У меня безоконное приложение.
Как добавить свое приложение к цепочке приложений получающих сообщений WM_DRAWCLIPBOARD?
Для SetClipboardViewer нужно указать HWnd окна, а у меня окна нет.
Gerzs вне форума Ответить с цитированием
Старый 26.03.2010, 14:27   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

тырк
Код:
program no_form;

uses windows, classes, messages, clipbrd;

type
 TF = class
 protected
  FWnd: HWnd;
  constructor Create;
  destructor Destroy;
  procedure WndProc(var Msg:TMessage); message WM_DRAWCLIPBOARD;
end;

var PrevHwnd : Hwnd;
     fwnd: HWND;
     t:tf;
     Msg: tmsg;

constructor TF.Create;
begin
 inherited Create;
 FWnd:= AllocateHWnd(WndProc);
 //
 PrevHwnd:= SetClipboardViewer(FWnd)
end;

destructor TF.Destroy;
begin
 inherited Create;
 deAllocateHWnd(fWnd)
end;

procedure tf.WndProc(var Msg:TMessage);
VAR p: PChar;
    H: THandle;
begin
 if Msg.wparam = WM_DRAWCLIPBOARD then begin

  SendMessage(PrevHWnd, WM_DRAWCLIPBOARD, 0, 0);
  IF Clipboard.HasFormat(CF_TEXT) THEN BEGIN
   H := Clipboard.GetAsHandle(CF_TEXT);
   P := GlobalLock(H);
   ///speeks(p); //озвучка // тут делаем что-необходимо
   GlobalUnlock(H);
  END;
  Msg.Result := 0;

 end
end;


begin
 t:= tf.Create;
 //
 try while GetMessage(Msg, 0, 0, 0) do begin
  TranslateMessage(Msg);
  DispatchMessage(Msg)
 end finally t.destroy end
// END СКЕЛЕТ ============================================

end.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.03.2010, 15:15   #3
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

Благодарю!
Gerzs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НЕчто по работе с зданим буфером есть ли с Дельфи или С++ Бильдере? wlad115 Обсуждение статей 1 10.08.2009 08:32
Работа с буфером обмена АлексейМк Общие вопросы C/C++ 1 05.08.2009 00:24
Резидентная программа. Работа с буфером клавиатуры Vohakisa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 21.06.2009 00:16
Работа с буфером обмена(win) NikLik Общие вопросы Delphi 6 24.06.2008 00:59
работа с буфером данных alexs2141 Общие вопросы C/C++ 5 06.06.2008 12:45