Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

можно ли сделать "ловушку" без использования библиотеки?


Ego ©   (2004-08-10 19:28:00) 

Постараюсь об`яснить, что мне надо: у меня есть программа, которая откликается на "горячие клавиши" другой программы.Но, для этого, ей( моей программе ), приходиться "таскать за собой" dll.Можно как-нибудь обойтись без библиотечного файла?


Алхимик_   (2004-08-11 09:08:00) [1]

[11] Aleksey Pavlov ©   (11.08.04 02:02) http://www.sources.ru/delphi/dll/hooks_aspects.shtml
:)
Прочитал до полного просветления.


Digitman   (2004-08-11 08:15:00) [2]


> Ego   (10.08.04 19:28)  
> Можно как-нибудь обойтись без библиотечного файла?



> Алхимик ©   (11.08.04 01:52) [10]
> Непонятно что за Dll и зачем её таскать.


ответ на вопрос - в справке:

Hook Scope
WH_CALLWNDPROC Thread or system
WH_CBT Thread or system
WH_DEBUG Thread or system
WH_GETMESSAGE Thread or system
WH_JOURNALPLAYBACK System only
WH_JOURNALRECORD System only
WH_KEYBOARD Thread or system
WH_MOUSE Thread or system
WH_MSGFILTER Thread or system
WH_SHELL Thread or system
WH_SYSMSGFILTER System only
The system hooks are a shared resource, and installing one affects all applications. All system hook functions must be in libraries


Алхимик   (2004-08-11 02:05:00) [3]

WM_KEYUP например :)


Aleksey Pavlov   (2004-08-11 02:02:00) [4]

>>Ego:

Если надо получать только информацию о нажатых клавишах, тогда можно обойтись без dll, как во всех остальных случаях.
См. WH_JOURNALRECORD.

>>Алхимик © (11.08.04 01:52):

case msg.message of
    WM_KEYUP:
    WM_KEYDOWN:
    {И так далее}
  end;  

Интересно, что же подразумевается в данномслучае под этим "И так далее"? =)


Алхимик   (2004-08-11 01:52:00) [5]

Непонятно что за Dll и зачем её таскать.
Примерчик работы ловушки:
var
 HookHandle: hHook;

function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
 msg: PEVENTMSG;
begin
 if Code >= 0 then begin
   result := 0;
   msg := Pointer(LParam);
   case msg.message of
     WM_KEYUP:
     WM_KEYDOWN:
     {И так далее}
   end;
   end else
     result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 if HookHandle <> 0 then
   UnhookWindowsHookEx(HookHandle);
end;


Ego   (2004-08-11 00:59:00) [6]

я пытался отловить поле " indicator ", но что-то , ...не судьба...


Ego   (2004-08-11 00:50:00) [7]

Подскажи, какую "прогу"...я написал "макрос" на ассемблере, но Windows-приложение его откинуло: знать не знаю...потом я разобрался, что DOS и Windows приложения работают чуть-чуть по-разному...ребята, пожалуйста, помогите..


Ego   (2004-08-10 21:58:00) [8]

OSokin ©  Спасибо за ответ, хотя, понятно, он и не помог.
Модепр- дмуда укук : тоже спасибо за ответ, хотя, поверь, если бы мне хотелось услышать глас "шлепка майонезного", то я бы обратился не к тебе: в твоем исполнении это слишком невнятно звучит...


  (2004-08-10 21:12:00) [9]

Удалено модератором


  (2004-08-10 21:12:00) [10]

Удалено модератором


  (2004-08-10 21:12:00) [11]

Удалено модератором


  (2004-08-10 21:12:00) [12]

Удалено модератором


  (2004-08-10 21:12:00) [13]

Удалено модератором


OSokin   (2004-08-10 20:53:00) [14]

Имхо другую прогу поставить


Наверх

Титульная страница Поиск, карта сайта Написать письмо