![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как на время отключить только клавиатуру [D6, Win95/98, WinME, WinXP]
Vasiliy © (2003-12-16 18:24:00)Как на время отключить только клавиатуру
ShellExecute(Application.Handle,
Pchar('Open'),Pchar('C:\Windows\Rundll32.exe'),
Pchar('rundll32 keyboard,disable'),
Pchar('C:\Windows'),SW_SHOWNORMAL);
Работает отрубает на мертво а вот братно никак
rundll32 keyboard,enable хоть и есть но не работает
NightAngel (2004-02-16 23:04:00) [1]Пример для Win95/98, WinME:
procedure CallRing0(Ring0Func:pointer);
const
ExceptionUsed = 5;
var
IDT : array [0..7] of byte;
lpOldGate : dword;
asm
pushad
sidt fword ptr IDT
mov ebx, dword ptr [IDT+2]
add ebx, 8*ExceptionUsed
mov dx, word ptr [ebx+6]
shl edx, 16d
mov dx, word ptr [ebx]
mov [lpOldGate], edx
mov eax, Ring0Func
mov word ptr [ebx], ax
shr eax, 16d
mov word ptr [ebx+6], ax
push ebx
int ExceptionUsed
pop ebx
mov ebx, dword ptr [IDT+2]
add ebx, 8*ExceptionUsed
mov edx, [lpOldGate]
mov word ptr [ebx], dx
shr edx, 16d
mov word ptr [ebx+6], dx
popad
end;
procedure DisableKeyboard;
asm
dw $20CD dd $0000D0008
dw $20CD dd $0000D0010
db $CF
end;
procedure EnableKeyboard;
asm
dw $20CD dd $0000D0008
dw $20CD dd $0000D000F
db $CF
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CallRing0(@DisableKeyboard);
Sleep(10000);
CallRing0(@EnableKeyboard);
end;
Для WinXP нужен драйвер режима ядра, или ч/з Ring0 (это уже из области вирусных технологий и приводить примеры я не буду).
able (2004-02-16 14:01:00) [2]>xion © (16.02.04 03:53) [4]
Но в ХР всё равно ctrl-alt-del будет и работать и всё разблокируется...
xion (2004-02-16 03:53:00) [3]Воспользуйся ловушка(hook) событий от клавы,
перехвытывай и дальше не отпровляй
Unax (2004-02-15 21:49:00) [4]В XP нельзя, такое сканает только под 9x
Bestden (2004-02-15 15:47:00) [5]А разве в ХР этой командой
ShellExecute(Application.Handle,
Pchar('Open'),Pchar('C:\Windows\Rundll32.exe'),
Pchar('rundll32 keyboard,disable'),
Pchar('C:\Windows'),SW_SHOWNORMAL);
мона вырубить клаву???
У меня не получается...!!! Может что-то не так со мной? :)
Erazser (2003-12-17 01:31:00) [6]Тут только один вариант: используй хуки (ловушки, hook's) в FAQ этого сайта есть нужная инфа!