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

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

Проверка SetWindowsHookEx [D7, WinXP]


alex-drob ©   (2005-05-23 22:28:00) 

Есть процедура в dll
procedure keyLock(val:boolean); stdcall; export;
begin
 if val then
   idKeyHook:=SetWindowsHookEx(WH_KEYBOARD,@keyHookFunc,hInstance,0)
 else
   UnhookWindowsHookEx(idKeyHook);
end;

Как зделать проверку чтобы нельзя было вызвать два раза подряд keyLock(true)


alex-drob   (2005-05-24 01:16:00) [1]

Спасибо помогло!!!

только
UnhookWindowsHookEx(idKeyHook) <> 0
ошибка
а хоть так
UnhookWindowsHookEx(idKeyHook) <>true
хоть так
UnhookWindowsHookEx(idKeyHook) =true
работает!


False_Delirium   (2005-05-24 01:01:00) [2]

if val then
   if idKeyHook = 0 then
     idKeyHook := SetWindowsHookEx(WH_KEYBOARD,@keyHookFunc,hInstance,0)
 else
   if UnhookWindowsHookEx(idKeyHook) <> 0 then
     idKeyHook := 0
   else
   // ошибка, поругаться

  UnhookWindowsHookEx(idKeyHook);

? :)


alex-drob   (2005-05-24 00:44:00) [3]

После
UnhookWindowsHookEx(idKeyHook);
idKeyHook не становиться равное 0.


alex-drob   (2005-05-24 00:37:00) [4]

Так не работает.
после keyLock(true) клавиатура блокируется
после keyLock(false) разблокируется
а если ещё раз вызвать keyLock(true) то клавиатура остаётся разблокированной.


Eraser   (2005-05-24 00:27:00) [5]

Sorry, замени = на <> !!!


Eraser   (2005-05-24 00:26:00) [6]

alex-drob   (23.05.05 22:28)

if idKeyHook = 0 then
 exit;


Наверх

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