Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как заблокировать мышь... [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()


Наверх

Титульная страница Поиск, карта сайта Написать письмо