![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокировка и разблокировка мыши [D5, Win95/98, WinME]
Serg2 © (2001-09-20 11:44:00)Всем здравствуйте.
Есть такой вопрос как впрограмме сидящей в трее заблокировать мышь в системе а по каколмуто условию разблокировать.
Я втречпл через функции rundll32 но толька блокировка а как разблокировать?
С уважением Serg2
Polygon (2002-02-17 18:31:00) [1]To All. Насколько я понял из DDK VXD как и DLL экспортирует функции. Можно ли обратиться к драйверу мыши и каким-то образом заблокировать ввод или (что еще лучше в случае с клавиатурой) фильтровать ввод
Polygon (2002-02-17 17:58:00) [2]To Nikel. Все это очень интересно но это все работает на уровне сообщений (т.е. блокирует сообщения, формируемые User32) с DInput это эффекта не принесет.
Поправте если не так: Железо(клава, мышь)>VXD>DInput.
[NIKEL] (2002-02-17 13:32:00) [3]выполнять через банальный winexec(Pchar("команда"),sw_Show);
"rundll32 keyboard,disable" - Заблокировать Клавиатуру
"rundll32 mouse,disable" - Запретить мышку
поменяй на enabled будет всё наоборот :)
и еще...
"rundll32 shell32,Control_RunDLL" - Запустить Панель Управления
"rundll32 shell32,OpenAs_RunDLL" - Открыть диалог "Открыть Как ..." ("Open With...")
"rundll32 shell32,ShellAboutA Info-Box" - Открыть "About Window Window"
"rundll32 shell32,Control_RunDLL desk.cpl" - Открыть диалог "Свойства: Экран" (Display Properties)
"rundll32 user,cascadechildwindows" - Выстроить все окна каскадно
"rundll32 user,tilechildwindows" - Свернуть все окна
"rundll32 user,repaintscreen" - Обновить Десктоп
"rundll32 shell,shellexecute Explorer" - Перезапустить Проводник
"rundll32 user,swapmousebutton" - Поменять кнопки мыши
"rundll32 user,setcursorpos" - Установить Курсор в позицию (0,0)
"rundll32 user,wnetconnectdialog" - Показать диалог "Подключить сетевой диск" ("Map Network Drive")
"rundll32 user,wnetdisconnectdialog" - Показать диалог "Отключить сетевой диск" ("Disconnect Network Disk")
"rundll32 user,disableoemlayer" - Отобразить окно BSOD ("""(BSOD) = Blue Screen Of Death """)
"rundll32 diskcopy,DiskCopyRunDll" - Показать диалог копирования диска
"rundll32 rnaui.dll,RnaWizard" - Запустить "Internet Connection Wizard"
"rundll32 shell32,SHFormatDrive" - Запустить окно форматирования дискеты ("Format Disk (A)")
"rundll32 shell32,SHExitWindowsEx -1" - "Холодный" перезапуск Проводника
"rundll32 shell32,SHExitWindowsEx 1" - Выключить компьютер
"rundll32 shell32,SHExitWindowsEx 0" - Завершить сеанс текущего пользователя
"rundll32 shell32,SHExitWindowsEx 2" Быстрый перезапуск Windows9x
"rundll32 krnl386.exe,exitkernel" - Выход из Windows 9x без потверждения
"rundll rnaui.dll,RnaDial "MyConnect" - Запустить диалог "Net Connection"
"rundll32 msprint2.dll,RUNDLL_PrintTestPage" - Выбор и печать тестовой страницы текущего принтера
"rundll32 user,setcaretblinktime" - Усатновить скорость мигания курсора
"rundll32 user, setdoubleclicktime" - Установить скорость двойного нажатия
"rundll32 sysdm.cpl,InstallDevice_Rundll" - Поиск устройств не PnP.
Polygon (2002-02-17 12:44:00) [4]К сожелению DDK для меня пока сложен. А есть другой способ ?
Pat (2002-02-17 00:58:00) [5]>Polygon
Написать свой драйвер :-))
Polygon (2002-02-16 21:33:00) [6]BlockInput хорошая вещь. Но как быть если если нужно заблокировать мышь(и клаву) в проге используещей DInput? Все эти хуки и BloсkInput`s не работают в этом случае.
Pat (2002-02-11 18:49:00) [7]>Victor
Кривее способа не видел....Вначале пробовать надо, а потом советовать...тем более повтор.
Victor (2002-02-11 08:29:00) [8]SetCursorPos(1000,1000);
В таймере
Pat (2002-02-10 19:50:00) [9]Что-то ни один толковый ответ не видел...
Блокирует клаву и мышь, снимается при C+A+D, но это уже совсем другая история :-))
procedure BlockInput(a:boolean);stdcall; external "user32.dll";
.........
blockinput(true) - блокирует
blockinput(false) - разблокирует
Pat (2002-02-10 19:00:00) [10]>А как разблокировать то?
Да никак!!! Rundll только блокирует мышь и клаву, поможет только перезагрузка....
Tosov (2002-02-10 17:45:00) [11]Zmey
Читай вопрос:
> Я втречпл через функции rundll32 но толька блокировка а как разблокировать?
А как разблокировать то?
Zmey (2002-02-08 18:16:00) [12]можно через BlockInput(enable:boolean)
а можно и через rundll disablemouse или что - то вроде того
BlankAlex (2002-02-07 14:06:00) [13]сходи на http://www.delphibest.narod.ru/pakosty.html
yar (2002-02-07 13:56:00) [14]не помню вот как я делал в win9x, а под nt/2000 - BlockInput(что-то там).
подробнее см. msdn
FFFF (2001-12-24 12:40:00) [15]lpdiDevice->SetCooperativeLevel(hwnd,DISCL_EXCLUSIVE | DISCL_FOREGROUND )
FFFF (2001-12-24 12:38:00) [16]Можно попробовать через DirectInput
Snake2000 (2001-12-24 12:27:00) [17]Все гораздо порще..... Для начала берутся ножницы...
Milz (2001-12-24 10:09:00) [18]Согласен. По-моему единственный выход поставить глобальный хук, который будет блокировать события от мыши для всех процессов/окон кроме некоторых системных (того-же трея) и своей программы. Примеров много.
Xpdeveloper (2001-12-22 07:17:00) [19]все подумали как отключить мышь
теперь - как ее из трэя включить?
Короче, в жизни так мало радости, что надо курсоры отключать.
Лучше его скрыть и все, зачем юзверя до мокрых штанов доводить?
Тут начитаешься - кому надо экран затемнить, кому курсор замочить.
Враги.
Delphimun (2001-12-21 17:01:00) [20]uses windows;
var
a: boolean;
begin
repeat
setcursorpos(1000,1000);
until a;
end.
Можно и по таймеру.