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

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

Почему SetWindowsHookEx не пашет, если активно Dos-окно ? [D6, Win95/98]


Phantomaz ©   (2004-02-25 19:35:00) 

использую следующий код (естессно в DLL):

function SysMsgProc(Code: Integer;
                   WParam: Longint;
                   var Msg: TMsg): Longint;
const
 PROCESS_TERMINATE = $0001;
var
 PrID : Cardinal;
begin
 case Msg.Message of
      WM_KEYDOWN: case msg.WParam of
                       VK_F1 : //
                       VK_F2 : //
                       ...
                       end;
      end;
 Result := CallNextHookEx(GetCurrentThreadId,
                          Code,
                          WParam,
                          Longint(@Msg));
end;

// Процедура запуска ловушки
procedure SysHook;
begin
 SysHook := SetWindowsHookEx(WH_GETMESSAGE,
                             @SysMsgProc,                                                      HInstance,
                             0);
end;

Так вот нажатие клавиш F1, F2 и др. не срабатывает, если в данный момент активно DOS-приложение или окно, например, Norton Commander. Что нужно сделать, чтобы заработало ?


Phantomaz   (2004-02-27 19:00:00) [1]

Пишу прогу, которая должна уметь принудительно закрывать любое (!) активное окно


Digitman   (2004-02-26 18:24:00) [2]

предвосхищаю очередной вопрос :

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

)

и сразу контрвопрос - а на кой ляд вообще тебе этот надо ?
ты в состоянии описать конечную задачу ?


Digitman   (2004-02-26 18:22:00) [3]


> Phantomaz   (26.02.04 18:21) [6]



> как сделать


написать и использовать собственный драйверт режима ядра


Phantomaz   (2004-02-26 18:21:00) [4]

Да, действительно, Win98   :)

Ну так как сделать перехват нажатия клавиш ВЕЗДЕ -
и в GUI, и в DOS ????????


VMcL   (2004-02-26 16:47:00) [5]

>>людь  (26.02.04 07:18) [3]
>[D6, Win95/98]

Win95/98 - это по-твоему win16?


Digitman   (2004-02-26 08:08:00) [6]


> нажатие клавиш F1, F2 и др. не срабатывает


то приложение, которое в дан.момент имеет фокус ввода, и получает при помощи внедренного в него хука извещение о нажатии клавиши

глоб.хук м.б. установлен только в GUI-приложения, ни в DOS- ни в консольные приложения глоб.хук внедрен быть не может


людь   (2004-02-26 07:18:00) [7]


> VMcL

Да и разве глаб. нуки будут работать на win16?


VMcL   (2004-02-25 20:18:00) [8]

>>Phantomaz  (25.02.04 19:36) [1]

Глобальныйхук долженнаходиться в DLL - F1.


Phantomaz   (2004-02-25 19:36:00) [9]

и ещё - можно сделать перехват нажатия клавиш без DLL ?


Наверх

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