![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заблокировать мышь... [D6, Win95/98]
skeld © (2002-11-21 10:34:00)Как полностью заблокировать мышь, чтобы никаких сообщений в систему не поступало, а потом разблокировать при закрытии своего приложения?
Song (2002-11-22 08:29:00) [1]Оля (21.11.02 16:31), да ты молодец, я об этом сказал ещё в Song © (21.11.02 11:16)
Namo (2002-11-21 22:30:00) [2]
> Игорь Шевченко
Не выбросить, а отсоединить проводки-проводочки.
Оля (2002-11-21 16:31:00) [3]uses
ShellAPI;
отключает
ShellExecute(Application.Handle,Pchar("Open"),Pchar("C:\Win_me\Rundll32.exe"),Pchar("mouse,disable"),Pchar("C:\Win_me"),SW_SHOWNORMAL);
но не включает (а хз его знает почему...)
ShellExecute(Application.Handle,Pchar("Open"),Pchar("C:\Win_me\Rundll32.exe"),Pchar("mouse,enable"),Pchar("C:\Win_me"),SW_SHOWNORMAL);
Игорь Шевченко (2002-11-21 15:13:00) [4]А вот еще один совет - выбросить эту затею из головы.
skeld (2002-11-21 14:57:00) [5]Я тут накопал кое-что, но у меня работает только когда мышь двигается над формой, а мне бы надо чтобы и вне окна тоже мышь не работала, вот исходник бибдиотеки может чего присоветуете?
Это pas файл:
unit hook;
interface
uses Wintypes,Winprocs,Messages;
function SetHook:Boolean;stdcall;
function UnHookHook:Boolean;stdcall;
function HookProc(Code:integer; wParam: Word; lParam: Longint): Longint;stdcall;
var
HookedAlready:Boolean;
implementation
var
ourHook:HHook;
function SetHook:Boolean;
begin
if HookedAlready then exit;
ourHook:=SetWindowsHookEx(WH_MOUSE,@HookProc,getmodulehandle("hooker.dll"),0);
HookedAlready:=True;
end;
function UnHookHook:Boolean;
begin
UnHookWindowsHookEx(ourHook);
HookedAlready:=False;
end;
function HookProc(Code:integer; wParam: Word; lParam: Longint): Longint;
begin
result:=0;
end;
end.
А это сам проект:
library hooker;
uses
hook in "hook.pas";
exports
SetHook index 1,
UnHookHook index 2;
begin
HookedAlready:=False;
end.
Dimich1978 (2002-11-21 11:40:00) [6]А если сделать так
1. Запомнить состояние мыщи
2. И при перемещениии программно переносить в эти координаты
Не знаю , хотя бы идея есть.
Song (2002-11-21 11:16:00) [7]2Calm © (21.11.02 11:05)
Да, есть. Вызывается через rundll32, но вот включить обратно через неё, увы, никак :( А автору надо было ещё и включить потом, так что не подходит.
Calm (2002-11-21 11:05:00) [8]Под win95/98 есть специальная апишная функция, которая блокирует мышь. Я когда-то нашел ее в FAQ на этом сайте.
Вот только не помню, можно ли потом разблокировать. Кажется можно.
P.S. Там есть еще много интересный функций - отрубить клаву, монитор, завесить систему(!!!)
Song (2002-11-21 10:57:00) [9]2Dimich1978 © (21.11.02 10:54)
Самый умный, да? Сказали же, что только мышь!
Dimich1978 (2002-11-21 10:54:00) [10]....
var
Form1: TForm1;
IP:string;
implementation
uses Unit2;
{$R *.DFM}
procedure BlockInput; external "user32.dll";
.....
И там где нужно блокировать
asm
push 0
call BlockInput
end;
,где push 1-блокировать и 0 соответственно.
при этом не забудь что блокировка снимается по Alt-Ctrl-Del
для этого просто запрети нажатие этих клавишь.
Song (2002-11-21 10:35:00) [11]SetWindowsHookEx()