Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 05.01.2012, 15:55
Energy of Fire Energy of Fire вне форума
Прохожий
 
Регистрация: 03.01.2012
Сообщения: 10
Репутация: 10
По умолчанию

C таким же успехом пользователь может поставить на хоткей Ctrl+C или Ctrl+X и т.п. (т.е на те комбинации клавиш, которые уже зарегистрированные в системе)...А у меня в компоненте, есть флаг, который отвечает за передачу сообщения дальше (я думал это можно сделать с помощью DefWindowProc, но, видимо, ошибался)...Хотелось бы узнать, зачем вообще нужна процерура DefWindowProc (т.к. что с ней, что без нее...все работает одинаково)...и как передать сообщение дальше на обработку (учитывая что наша процедура словила хокей...тот же пример с Ctrl+V, ну или с любой другой,зарегистрированной в системе ,комбинацией клавиш (Ctrl+Z,Win+D,Ctrl+S и т.п.))
Ответить с цитированием
  #17  
Старый 06.01.2012, 09:19
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

правильно, DefWindowProc вообще ни при чем, как я уже писал об этом выше. как такой вариант:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, Messages;

var
  AMsg: TMsg;
  Tag: Integer = 0;

begin
  if not RegisterHotKey(0, 1, MOD_CONTROL, Ord('V')) then
  begin
    Writeln('!RegisterHotKey');
    Readln;
  end else
  begin
    while GetMessage(AMsg, 0, 0, 0) do
    begin
      if AMsg.message=WM_HOTKEY then
      begin
        Writeln('WM_HOTKEY');
        Inc(Tag);
        if Tag=5 then Break;
      end;
    end;
    UnregisterHotKey(0, 1);
  end;
end.
здесь вообще нет окна и естественно оконной процедуры, а только очередь сообщений.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #18  
Старый 06.01.2012, 13:38
Energy of Fire Energy of Fire вне форума
Прохожий
 
Регистрация: 03.01.2012
Сообщения: 10
Репутация: 10
По умолчанию

Если воспользоваться вот этим вариантом...оно-то работать будет...но, как и мой вариант, но после перехвата WM_HOTKEY, сообщение вставки (если хоткей стоит на Ctrl+V) не дойдет до того же блокнота...
Ответить с цитированием
  #19  
Старый 06.01.2012, 17:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

да перехват WM_HOTKEY тут тоже ни при чем. можно зарегистрировать хоткей и не обрабатывать его сообщение - эффект, естественно, будет тот же. когда установлен хоткей Ctrl+V, то вообще не будет генерироваться сообщение WM_PASTE для контрола - некому его генерировать будет. хоткеи это не цепочка, в отличии от Hooks.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #20  
Старый 06.01.2012, 20:55
Energy of Fire Energy of Fire вне форума
Прохожий
 
Регистрация: 03.01.2012
Сообщения: 10
Репутация: 10
По умолчанию

получается, я, в любом случае, регистрируя хоткей, не смогу передать сообщение дальше...так?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025