Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Почему SetWindowsHookEx не пашет, если активно Dos-окно ?   Найти похожие ветки 

 
Phantomaz   (2004-02-25 19:35) [0]

использую следующий код (естессно в 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-25 19:36) [1]

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


 
VMcL ©   (2004-02-25 20:18) [2]

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

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


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


> VMcL

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


 
Digitman ©   (2004-02-26 08:08) [4]


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


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

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


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

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

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


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

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

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


 
Digitman ©   (2004-02-26 18:22) [7]


> Phantomaz   (26.02.04 18:21) [6]



> как сделать


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


 
Digitman ©   (2004-02-26 18:24) [8]

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

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

)

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


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

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



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.032 c
6-1077967331
Morg
2004-02-28 14:22
2004.04.25
Срочно, как отослать Stream нескольким пользователям (SreverSocke


1-1081251090
Станислав
2004-04-06 15:31
2004.04.25
Создание объекта класса


1-1081491659
Max_
2004-04-09 10:20
2004.04.25
Функция POS - поиск в обратном направлении


1-1081662810
Sphinx
2004-04-11 09:53
2004.04.25
Событие восстановления окна


14-1079985969
Andreykom
2004-03-22 23:06
2004.04.25
Memory





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский