Главная страница
    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.036 c
1-1082631546
CraKer
2004-04-22 14:59
2004.05.09
Курсор..


7-1079811061
Алексей31
2004-03-20 22:31
2004.05.09
!!! Записать-отформатировать-считать ?!


1-1082447654
Top100
2004-04-20 11:54
2004.05.09
Уничтожение формы


3-1081939231
31512
2004-04-14 14:40
2004.05.09
TClientDataSet.ApplyUpdates(0) & TClientDataSet.Refresh


6-1079634018
Awod
2004-03-18 21:20
2004.05.09
Delphi и Indy





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