Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Перехват системных комбинаций клавиш для скринсайвера   Найти похожие ветки 

 
Arm79 ©   (2004-03-12 15:18) [0]

Прошу прощения за сабж, знаю - таких вопросов было много, но все они немного не полные. Мне нужно написать свой СкринСейвер. Платформа НТ. Все бы ничего, но требуется в программе определить, какой именно пароль вводит пользователь, и в зависимости от этого выполнять различные действия. А стандартные средства Виндуса, позволяющие это сделать, мне неизвестны. Я решил сам спрашивать пароль, но тут встала необходимость блокировать любые системные комбинации клавиш. Знаю, что нужны хуки, но не умею ими пользоваться. На сайте нашел HotKeyManager и xSpyOut, но там не показано, как "глушить" комбинации (а может, я чего не понял?).

Буду благодарен за любую помощь.

Может, кто-нить подскажет ссылку по основам работы с хуками?


 
Axis_of_Evil ©   (2004-03-12 15:42) [1]

>Может, кто-нить подскажет ссылку по основам работы с хуками?Статья на этом сайте


 
Arm79 ©   (2004-03-12 15:54) [2]

Я ее как раз и читаю, достаточно много непонытных моментов


 
Arm79 ©   (2004-03-15 14:34) [3]

При установке хука на контрол-альт-дел сообщение не глушится - диспетчер все таки вызывается

// пишу по памяти - может ошибся в названиях

exports
 StartHook,
 StopHook;

----------
var
 MainF : HWND;
 Hook  : HHOOK;

procedure StartHook(MyMainFormHandle : HWND); export; stdcall;
begin
 MainF := MyMainFormHandle;
 hook  := SetWindowsHookEx(wh_keyboard, @BlockKeys, hInstance, 0);
end;

procedure StopHook(); export; stdcall;
begin
 UnhookWindowsEx (hook);
end;

function BlokKeys(code : integer; wParam: wParam; lParam: lParam): integer;
var
 keyss: TKeyBoardState;
begin
 GetKeyboardState(keyss);
 if not (keyss[vk_control]>1) and (keyss[vk_menu]>1) and keyss[vk_delete]>1)
 then CallNextHookEx(hook, code, wParam, lParam);
 result := 0;
end;

Что я делаю не так?


 
Arm79 ©   (2004-03-15 14:35) [4]

При установке хука на контрол-альт-дел сообщение не глушится - диспетчер все таки вызывается

// пишу по памяти - может ошибся в названиях

exports
 StartHook,
 StopHook;

----------
var
 MainF : HWND;
 Hook  : HHOOK;

procedure StartHook(MyMainFormHandle : HWND); export; stdcall;
begin
 MainF := MyMainFormHandle;
 hook  := SetWindowsHookEx(wh_keyboard, @BlockKeys, hInstance, 0);
end;

procedure StopHook(); export; stdcall;
begin
 UnhookWindowsEx (hook);
end;

function BlokKeys(code : integer; wParam: wParam; lParam: lParam): integer;
var
 keyss: TKeyBoardState;
begin
 GetKeyboardState(keyss);
 if not (keyss[vk_control]>1) and (keyss[vk_menu]>1) and keyss[vk_delete]>1)
 then CallNextHookEx(hook, code, wParam, lParam);
 result := 0;
end;

Что я делаю не так?


 
Arm79 ©   (2004-03-15 14:35) [5]

При установке хука на контрол-альт-дел сообщение не глушится - диспетчер все таки вызывается

// пишу по памяти - может ошибся в названиях

exports
 StartHook,
 StopHook;

----------
var
 MainF : HWND;
 Hook  : HHOOK;

procedure StartHook(MyMainFormHandle : HWND); export; stdcall;
begin
 MainF := MyMainFormHandle;
 hook  := SetWindowsHookEx(wh_keyboard, @BlockKeys, hInstance, 0);
end;

procedure StopHook(); export; stdcall;
begin
 UnhookWindowsEx (hook);
end;

function BlokKeys(code : integer; wParam: wParam; lParam: lParam): integer;
var
 keyss: TKeyBoardState;
begin
 GetKeyboardState(keyss);
 if not (keyss[vk_control]>1) and (keyss[vk_menu]>1) and keyss[vk_delete]>1)
 then CallNextHookEx(hook, code, wParam, lParam);
 result := 0;
end;

Что я делаю не так?


 
Arm79 ©   (2004-03-15 14:35) [6]

При установке хука на контрол-альт-дел сообщение не глушится - диспетчер все таки вызывается

// пишу по памяти - может ошибся в названиях

exports
 StartHook,
 StopHook;

----------
var
 MainF : HWND;
 Hook  : HHOOK;

procedure StartHook(MyMainFormHandle : HWND); export; stdcall;
begin
 MainF := MyMainFormHandle;
 hook  := SetWindowsHookEx(wh_keyboard, @BlockKeys, hInstance, 0);
end;

procedure StopHook(); export; stdcall;
begin
 UnhookWindowsEx (hook);
end;

function BlokKeys(code : integer; wParam: wParam; lParam: lParam): integer;
var
 keyss: TKeyBoardState;
begin
 GetKeyboardState(keyss);
 if not (keyss[vk_control]>1) and (keyss[vk_menu]>1) and keyss[vk_delete]>1)
 then CallNextHookEx(hook, code, wParam, lParam);
 result := 0;
end;

Что я делаю не так?


 
Arm79 ©   (2004-03-15 14:36) [7]

При установке хука на контрол-альт-дел сообщение не глушится - диспетчер все таки вызывается

// пишу по памяти - может ошибся в названиях

exports
 StartHook,
 StopHook;

----------
var
 MainF : HWND;
 Hook  : HHOOK;

procedure StartHook(MyMainFormHandle : HWND); export; stdcall;
begin
 MainF := MyMainFormHandle;
 hook  := SetWindowsHookEx(wh_keyboard, @BlockKeys, hInstance, 0);
end;

procedure StopHook(); export; stdcall;
begin
 UnhookWindowsEx (hook);
end;

function BlokKeys(code : integer; wParam: wParam; lParam: lParam): integer;
var
 keyss: TKeyBoardState;
begin
 GetKeyboardState(keyss);
 if not (keyss[vk_control]>1) and (keyss[vk_menu]>1) and keyss[vk_delete]>1)
 then CallNextHookEx(hook, code, wParam, lParam);
 result := 0;
end;

Что я делаю не так?


 
Arm79 ©   (2004-03-15 14:37) [8]

Извиняюсь, глюк какой-то, я хотел отправить всего один раз


 
Arm79 ©   (2004-03-17 16:44) [9]

Что, никто не знает?


 
Игорь Шевченко ©   (2004-03-17 21:25) [10]


> При установке хука на контрол-альт-дел сообщение не глушится
> - диспетчер все таки вызывается


Было бы странно, если бы не вызывался.
Читать MSDN до полного просветления. Никакая статья по хукам не поможет


 
Анонимщик ©   (2004-03-18 02:10) [11]

Я не читал дискуссию, но могу предположить, что тебе, товарищ, нужно читать MSDN в части winlogon и GINA. Только потом поймешь, что хотел спросить


 
Alexander666 ©   (2004-03-18 04:23) [12]

Собственно конкретное решение по данному сабжу: http://irazin.ru/Samples/SASHook.htm, у меня есть перевод на Делфи. Могу выслать.


 
Smithson ©   (2004-03-18 12:17) [13]

Есть комбинации клавиш, обработкой которых занять непосредственно поток windows, отвественных за работу с клавой и мышью (RIT). Ctrl+Alt+Del, Alt+Tab и т.д. Перехватить их ты не сможешь.


 
Arm79 ©   (2004-03-18 18:35) [14]

>Игорь Шевченко ©   (17.03.04 21:25) [10]

MSDN большой, просветляться буду долго

>Анонимщик ©   (18.03.04 02:10) [11]

спасибо за наводку



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

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
1-1080109464
alex123
2004-03-24 09:24
2004.04.11
dfm файл и русские символы для DisplayLabel


3-1078990424
Michail Dalakov
2004-03-11 10:33
2004.04.11
Сортировка в DB Oracle


7-1075539955
dr Tr0jan
2004-01-31 12:05
2004.04.11
Сервисы в Win2k


14-1082014126
}|{yk
2004-04-15 11:28
2004.04.11
Чем грозит?


7-1078743352
-=наблюдатель=-
2004-03-08 13:55
2004.04.11
Lock