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

Вниз

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

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

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

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

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


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

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

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

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


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

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


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

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


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

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


 
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: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) [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) [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: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: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-15 14:37) [8]

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


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

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


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

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


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


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


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


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


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


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


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

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


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

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


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

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


 
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 и т.д. Перехватить их ты не сможешь.


 
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]

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


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

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

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

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

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



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

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

Наверх




Память: 0.53 MB
Время: 0.035 c
11-1067197291
puky
2003-10-26 22:41
2004.05.09
www.Rentacoder.com и Kol


14-1081845051
LaidBack
2004-04-13 12:30
2004.05.09
Немножко расслабился :)


6-1079099372
ASMiD
2004-03-12 16:49
2004.05.09
Как связать два компа через I-net


4-1075545213
Шишкин Илья
2004-01-31 13:33
2004.05.09
Работа с иконками


1-1082379131
ksa3003
2004-04-19 16:52
2004.05.09
DateTimePicker





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский