-
столкнулся с проблеммой, когда хукаеца клава только тогда, когда активно приложение без админ. прав если запускать под админом то все ОК, но так нельзя вопрос. как ловить все хуки без админ.прав ?
зы. почему на форме для вопроса нет чекбоксов Vista&Win7?
-
> как ловить все хуки без админ.прав ?
WH_KEYBOAD_LL
-
WH_KEYBOARD_LL
-
> Vista
уже старо и не актуально ;)
-
> WH_KEYBOARD_LL
:) собственно с ним и проблемма
-
> :) собственно с ним и проблемма
вово у меня тоже этот хук используется,забыл сразу написать
-
> с ним и проблемма
> у меня тоже этот хук используется
И оба поди реализовали его в dll)
-
неа :) в самой проге
-
> QAZ (16.12.09 13:13) [7]
И чего говорит результат вызова SetWindowsHookEx ?
-
говорит "вот тибе хендл процедуры, иди с миром" и собствено НЕ хукает только если активно окно проги под админом
-
также хотелось бы слышать версии не людей у которых стоит ХР и они предпологают что... а тех кто сидит на Висте\Семерке и у них это работает :)
-
Если бы WH_KEYBOAD_LL у меня в Win7 не работал, я бы не писал, однако ж все работает. И админских прав не требует.
-
Я уже этот код выкладывал, выложу еще раз. Под W7 прекрасно работает без админских прав.
program DisableLowLevelKeys;
uses
Windows, Messages;
const
LLKHF_ALTDOWN = KF_ALTDOWN shr 8;
WH_KEYBOARD_LL = 13;
type
TKBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: DWORD;
end;
PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
var
hhkLowLevelKybd: HHOOK;
function LowLevelKeyboardProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
fEatKeystroke: boolean;
p: PKBDLLHOOKSTRUCT;
begin
fEatKeystroke := false;
if nCode = HC_ACTION then
begin
case wParam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:
begin
p := PKBDLLHOOKSTRUCT(lParam);
fEatKeystroke := ((p^.vkCode = VK_LWIN) or (p^.vkCode = VK_RWIN)) or
((p^.vkCode = VK_TAB) and ((p^.flags and LLKHF_ALTDOWN) <> 0)) or
((p^.vkCode = VK_ESCAPE) and ((p^.flags and LLKHF_ALTDOWN) <> 0)) or
((p^.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) <> 0)) or
((p^.vkCode = VK_F4) and ((p^.flags and LLKHF_ALTDOWN) <> 0));
end;
end;
end;
if fEatKeystroke then
result := 1
else
result := CallNextHookEx(0, nCode, wParam, lParam);
end;
begin
hhkLowLevelKybd := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
MessageBox(0,
PChar('Alt+Esc, Ctrl+Esc, WIN, Alt+F4, and Alt+Tab are now disabled.' + #13#10 +
'Click "Ok" to terminate this application and re-enable these keys.'),
PChar('Disable Low-Level Keys'),
MB_OK);
UnhookWindowsHookEx(hhkLowLevelKybd);
end.
-
и как он у тибя креатица\обрабатывается ?
-
опередил :)
-
> и как он у тибя креатица\обрабатывается ?
что конкретно непонятно в коде?
-
бгг. не работает :) у тибя уак вобще включен ?
-
> у тибя уак вобще включен ?
конечно включен.
-
ну не работает запускаеш любую прогу от одмина запускаеш хукер когда активен хукер,жмем Win ,пуск не вылазит - чудо когда активна одминпрога,жмем Win ,пуск вылазит - ватафака ?
-
проверено как в х32 так и в х64,обе чистые, тестовые
|