ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
delphi 6/7 помогите вырубить клаву |

18.11.2009, 19:56
|
|
Познающий
Регистрация: 23.06.2006
Сообщений: 33
Провел на форуме: 294206
Репутация:
42
|
|
delphi 6/7 помогите вырубить клаву
Ребят, помогите с кодом, для отключенеи всей клавы при старте проги.. а то в сети нашел несколько способов, но что-то не рабят..
|
|
|

18.11.2009, 20:48
|
|
Участник форума
Регистрация: 09.03.2009
Сообщений: 178
Провел на форуме: 1605524
Репутация:
523
|
|
Модуль предназначен для осуществления частичной
блокировки/разблокировки функций клавиатуры и мышки.
Procedure KeyBoardOn - разблокировка (включение) клавиатуры
Procedure KeyBoardOff - блокировка (выключение) клавиатуры
Procedure MouseOn - разблокировка (включение) мышки
Procedure MouseOff - блокировка (выключение) мышки
Код:
unit mklu;
interface
uses
Windows;
var
m_OldMHook: HHook = 0;
k_OldKBHook: HHook = 0;
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;
procedure KeyBoardOn;
procedure KeyBoardOff;
function MouseHook(code: Integer; wparam: Word; lparam: LongInt): LongInt;
stdcall;
procedure MOUSEON;
procedure MouseOff;
implementation
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;
begin
if code < 0 then
Result := CallNextHookEx(k_oldKbHook, code, wparam, lparam)
else
Result := 1;
end;
// включение клавы
procedure KeyBoardOn;
begin
if k_OldKbHook <> 0 then
begin
UnHookWindowshookEx(k_OldKbHook);
k_OldKbHook := 0;
end;
end;
// выключение клавы
procedure KeyBoardOff;
begin
k_OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0);
end;
function MouseHook(code: Integer; wparam: Word; lparam: LongInt): LongInt;
stdcall;
begin
if code < 0 then
Result := CallNextHookEx(m_oldMHook, code, wparam, lparam)
else
Result := 1;
end;
// включение мышки
procedure MOUSEON;
begin
if m_OldMHook <> 0 then
begin
UnHookWindowshookEx(m_OldMHook);
m_OldMHook := 0;
end;
end;
// выключение мышки
procedure MouseOff;
begin
m_OldMHook := SetWindowsHookEx(WH_MOUSE, @MOUSEHook, HInstance, 0);
end;
end.
Пример использования:
uses mklu;
{блокировка(LockIt = true) или разблокировка(LockIt= False) клавы}
procedure LockUnlockKeyboard(LockIt: Boolean);
begin
if LockIt then
KeyBoardOFF
else
KeyBoardOn;
end;
{блокировка(LockIt = true) или разблокировка(LockIt= False) мышки}
procedure LockUnlockMouse(LockIt: Boolean);
begin
if LockIt then
MouseOff
else
MouseOn;
end;
|
|
|

18.11.2009, 21:54
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
можеш использовать BlockInput из USER32.dll но опят таки частичная блокировка =)
Последний раз редактировалось transserg; 18.11.2009 в 22:12..
|
|
|

20.11.2009, 15:15
|
|
Познающий
Регистрация: 23.06.2006
Сообщений: 33
Провел на форуме: 294206
Репутация:
42
|
|
Сообщение от AquaKlaster
Модуль предназначен для осуществления частичной
блокировки/разблокировки функций клавиатуры и мышки.
Procedure KeyBoardOn - разблокировка (включение) клавиатуры
Procedure KeyBoardOff - блокировка (выключение) клавиатуры
Procedure MouseOn - разблокировка (включение) мышки
Procedure MouseOff - блокировка (выключение) мышки
Код:
unit mklu;
interface
uses
Windows;
var
m_OldMHook: HHook = 0;
k_OldKBHook: HHook = 0;
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;
procedure KeyBoardOn;
procedure KeyBoardOff;
function MouseHook(code: Integer; wparam: Word; lparam: LongInt): LongInt;
stdcall;
procedure MOUSEON;
procedure MouseOff;
implementation
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;
begin
if code < 0 then
Result := CallNextHookEx(k_oldKbHook, code, wparam, lparam)
else
Result := 1;
end;
// включение клавы
procedure KeyBoardOn;
begin
if k_OldKbHook <> 0 then
begin
UnHookWindowshookEx(k_OldKbHook);
k_OldKbHook := 0;
end;
end;
// выключение клавы
procedure KeyBoardOff;
begin
k_OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0);
end;
function MouseHook(code: Integer; wparam: Word; lparam: LongInt): LongInt;
stdcall;
begin
if code < 0 then
Result := CallNextHookEx(m_oldMHook, code, wparam, lparam)
else
Result := 1;
end;
// включение мышки
procedure MOUSEON;
begin
if m_OldMHook <> 0 then
begin
UnHookWindowshookEx(m_OldMHook);
m_OldMHook := 0;
end;
end;
// выключение мышки
procedure MouseOff;
begin
m_OldMHook := SetWindowsHookEx(WH_MOUSE, @MOUSEHook, HInstance, 0);
end;
end.
Пример использования:
uses mklu;
{блокировка(LockIt = true) или разблокировка(LockIt= False) клавы}
procedure LockUnlockKeyboard(LockIt: Boolean);
begin
if LockIt then
KeyBoardOFF
else
KeyBoardOn;
end;
{блокировка(LockIt = true) или разблокировка(LockIt= False) мышки}
procedure LockUnlockMouse(LockIt: Boolean);
begin
if LockIt then
MouseOff
else
MouseOn;
end;
НЕ рабит она !!! точнее у мя например клава как жила после этого так и живет дальше норм...
|
|
|

20.11.2009, 15:15
|
|
Познающий
Регистрация: 23.06.2006
Сообщений: 33
Провел на форуме: 294206
Репутация:
42
|
|
Сообщение от transserg
можеш использовать BlockInput из USER32.dll но опят таки частичная блокировка =)
пробовал.. ну просто чет у мя там блочица все сразу..и клава и мышь.. а над тока клаву.. (((
|
|
|

20.11.2009, 19:24
|
|
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме: 98006
Репутация:
17
|
|
Код:
library DisableKB;
uses
Forms,
Windows,
Messages,
HookCommon in 'HookCommon.pas';
{$J+}
const
Hook: HHook = 0;
WH_KEYBOARD_LL = 13;
{$J-}
{$R *.res}
function HookProc(nCode: Integer; MsgID: WParam; Data: LParam): LResult; stdcall;
begin
Result := -1;
end;
procedure DisableKB; stdcall;
begin
if Hook = 0 then Hook:=SetWindowsHookEx(WH_KEYBOARD_LL,@HookProc,HInstance,0);
end;
procedure EnableKB; stdcall;
begin
UnhookWindowsHookEx(Hook);
Hook:=0;
end;
exports
DisableKB, EnableKB;
begin
end.
unit HookCommon;
interface
uses Windows;
procedure DisableKB; stdcall;
procedure EnableKB; stdcall;
implementation
procedure DisableKB; stdcall; external 'disablekb.DLL';
procedure EnableKB; stdcall; stdcall; external 'disablekb.DLL';
initialization
end.
Последний раз редактировалось slesh; 21.11.2009 в 10:52..
Причина: [code] КОД [/code]
|
|
|

20.11.2009, 19:49
|
|
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме: 98006
Репутация:
17
|
|
Если клава посажена на разъем PS/2, то можно включать и отключать клавиатуру по мере необходимости (посылка 0ADh в порт 64h отключает клаву, 0AEh включает).
|
|
|

20.11.2009, 23:46
|
|
Новичок
Регистрация: 19.11.2009
Сообщений: 8
Провел на форуме: 37031
Репутация:
0
|
|
DeaD_Moroz , если отключать разьём PS/2 то disablekb.DLL не нужен?
|
|
|

21.11.2009, 06:12
|
|
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме: 98006
Репутация:
17
|
|
Сообщение от Yokohama
DeaD_Moroz , если отключать разьём PS/2 то disablekb.DLL не нужен?
если посылать 0ADh в порт 64h-то конечно нет(= я написал два примера(= первый-создаёшь библиотеку и пользуешься ей, а второй посылать 0ADh в порт 64h.
|
|
|

21.11.2009, 10:55
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
2 DeaD_MoroZ Нуну, погляжу я на тебя как ты в юзермоде под XP будеш посылать данные в порт. А Таскать драйвер ради этого - глупо.
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Литература Delphi
|
Sams |
С/С++, C#, Delphi, .NET, Asm |
2 |
19.03.2010 19:46 |
|
Books
|
PSalm69 |
Избранное |
248 |
27.10.2009 04:52 |
|
Помогите скомпилировать исходник на Delphi
|
cric.cric |
С/С++, C#, Delphi, .NET, Asm |
1 |
27.05.2009 15:53 |
|
ЛЮДИ ПОМОГИТЕ В Delphi
|
Bill |
С/С++, C#, Delphi, .NET, Asm |
16 |
21.03.2006 04:39 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|