Посл.ответ |
Сообщение |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 18 июня 2008 13:59 · Личное сообщение · #1
Хочу для себя сделать утиль которая будет на определенное время вырубать клавиатуру.
Слыхал про то что можно поставить хук на клаву и фильтровать ввод. Склепал тестовую прогу и только в блокноте попробовал понабирать експлорер и все проги кроме оперы сдохли и те которые были в автозагрузке опять загрузились. Мышь в это время должна работать и клаву чтобы можно было потом включить. Гугл ничего толкового не выдал. Буду рад любой инфе. Заранее спасибо.
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |
|
Ранг: 238.8 (наставник), 67thx Активность: 0.2↘0 Статус: Участник CyberHunter
|
Создано: 18 июня 2008 15:07 · Личное сообщение · #2
rundll32 keyboard,disable Отключить клавиатуру
----- Nulla aetas ad discendum sera | Сообщение посчитали полезным: |
Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 18 июня 2008 15:11 · Личное сообщение · #3
Stack пишет:
Хочу для себя сделать утиль которая будет на определенное время вырубать клавиатуру.
Лучше наоборот, ибо мышка - это зло))
По делу:
_http://www.exelab.ru/f/action=vthread&forum=6&topic=11262
_http://forum.vingrad.ru/showtopic=71208
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 18 июня 2008 15:36 · Поправил: Stack · Личное сообщение · #4
Flint пишет:
rundll32 keyboard,disable Отключить клавиатуру
Я не троян делаю - мне и включить надо. Кстати в хп ругаеться что нет такой функции.
Gambit Сходил по второй твоей ссылке и растроился
Может как то через хук можно фильтровать чтобы система не грохнулась?
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |
Ранг: 279.1 (наставник) Активность: 0.16↘0 Статус: Участник wizard
|
Создано: 18 июня 2008 17:00 · Личное сообщение · #5
Flint пишет:
rundll32 keyboard,disable
в XP не прокатит .
Stack перехватывай все нажатия клавиш и не выводи их дальше.
----- Что один человек сделал , другой всегда сломать может... | Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 18 июня 2008 17:00 · Личное сообщение · #6
Ну драйвер-фильтр на клаву повесить можешь, на васме есть пример кейлоггера, правда, с УСБ могут быть сложности...
| Сообщение посчитали полезным: |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 18 июня 2008 18:56 · Личное сообщение · #7
MACKLIA пишет:
Stack перехватывай все нажатия клавиш и не выводи их дальше.
Попробую WH_KEYBRD_LL а то WH_KEYBRD грохает систему. Или Может быть просто не делать CallNextHookEx?
Archer пишет:
Ну драйвер-фильтр на клаву повесить можешь, на васме есть пример кейлоггера, правда, с УСБ могут быть сложности...
До этого не дорос еще. Напишу еще косяво и будет бсодить.
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |
Ранг: 216.9 (наставник), 85thx Активность: 0.31↘0.15 Статус: Участник X-Literator
|
Создано: 18 июня 2008 20:17 · Личное сообщение · #8
DisableOEMLayer из user - отрубает сразу мышку, клавиатуру и дисплей =)
----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. | Сообщение посчитали полезным: |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 18 июня 2008 20:27 · Личное сообщение · #9
Crawler пишет:
DisableOEMLayer из user - отрубает сразу мышку, клавиатуру и дисплей =)
в хп это отменили
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |
Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 19 июня 2008 00:10 · Поправил: Gambit · Личное сообщение · #10
Вспомнил! Есть способ глобального перехвата.
Создавай окно(можно невидимое) и используй RegisterHotKey:
RegisterHotKey(Хендл окна,ID (любая цифра),ПАРНАЯ_КЛАВИША (например, MOD_CONTROL или NULL), код клавиши)
Следующая прога лочит клавишу V, разлочивание происходит при нажатии Ctrl+Enter.
PS Конечно, гемморой - каждую клаву обработать, но можно в цикл загнать...
PPS главное в приведенном ниже коде:
------------------------------
RegisterHotKey(hWnd,0x1,NULL,0x56);
RegisterHotKey(hWnd,0x2,MOD_CONTROL,0x0D);
case WM_HOTKEY:
switch(wParam){
case 0x1:
//Ничего не делаем при нажатии v
break;
case 0x2:
//Возвращаем все как было
UnregisterHotKey(hWnd,1);
return 0;
}
--------------------------
PPPS Компилится это все в Borland C++ командой bcc32 -tWE name.cpp
#include <windows.h>
HBITMAP hBitmap;
HINSTANCE hInstance;
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,
WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int iCmdShow)
{
const char szClassName[]="window";
WNDCLASSEX wc;
MSG msg;
HWND hWnd;
wc.cbSize=sizeof(wc);
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=NULL;
wc.cbWndExtra=NULL;
wc.hInstance=hInstance;
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName=NULL;
wc.lpszClassName=szClassName;
wc.hIcon=LoadIcon(hInstance,IDI_APPLICATION);
wc.hIconSm=LoadIcon(hInstance,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL,"Не могу зарегить класс","Ошибка",MB_OK | MB_ICONSTOP);
return -1;
}
hWnd=CreateWindowEx(NULL, szClassName,
"Фотка",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
{
MessageBox(NULL,"Не могу создать новое окно","Ошибка",MB_OK | MB_ICONSTOP);
return -1;
}
RegisterHotKey(hWnd,0x1,NULL,0x56);
RegisterHotKey(hWnd,0x2,MOD_CONTROL,0x0D);
// Цикл обработки сообщений
while (GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
// Оконная процедура
LRESULT CALLBACK WndProc(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
switch(msg){
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
return 0;
case WM_HOTKEY:
switch(wParam){
case 0x1:
//Ничего не делаем при нажатии v
break;
case 0x2:
//Возвращаем все как было
UnregisterHotKey(hWnd,1);
return 0;
}
default:
return DefWindowProc(hWnd,msg,wParam,lParam);
}
return 0;
}
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 19 июня 2008 00:55 · Личное сообщение · #11 |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 20 июня 2008 11:06 · Личное сообщение · #12
Gambit Спасибо большое
var b:byte
begin
for b:=0 to b:=255 do
begin
RegisterHotKey(Handle,b+1,0,b);
end;
end;
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |