Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Блокировка копутера


Автор: DonPager 4.9.2004, 15:21
подскажите как полностью заблокировать компутер - без всяких паролей и прочего - просто на некоторое время полность заблокировать мышь и клаву.

ЗЫ.
ежели сможете заодно подскажите как енто сделать с помощью масма...

спасибо

Автор: -=::BlackCat::=- 4.9.2004, 15:52
naschot mishi i klavi est i w FAQe i na forume uge raz 100 bilo wink.gif

Автор: DonPager 4.9.2004, 16:04
-=::BlackCat::=- я конечно не буду оригинальным если скажу что в факе немного не то что мне надо smile.gif

а именно:
мне надо чтобы ВСЕ приложения как работали так и продолжали работать, однако пользователь ничего не мог бы сделать ( даже мышь не сдвинуть )
т.е. зачем мне всё это надо: допустим я выкуриваю сигарету за 5 минут - я поставил такое время - покурил пришёл и полный гарантий что к компу никто не подходил - пришёл и продолжил работать smile.gif

Автор: Pakshin A. S. 4.9.2004, 16:41
Код

procedure BlockInput; external 'user32.dll';

procedure Block;
asm
 push 1
 call BlockInput;
end;

procedure UnBlock;
asm
 push 0
 call BlockInput;
end;

procedure BlockExit;
begin
 SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
end;

procedure UnBlockExit;
begin
 SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
end;

function TryBlockInput:boolean;
begin
 Result:=false;
 try
  Block;
  BlockExit;
 finally
  Result:=true;
 end;
end;

function TryUnBlockInput:boolean;
begin
 Result:=false;
 try
  UnBlock;
  UnBlockExit;
 finally
  Result:=true;
 end;
end;


Но только не под новыми версиями (2000, XP и т. п.)...
Добавлено @ 16:49
Ещё есть тема по теме:
http://forum.vingrad.ru/index.php?showtopic=6269&hl=ctrl\+alt\+del

Автор: chaos 8.9.2004, 10:41
вот так можно блокировать мышь biggrin.gif
Код

SetCursorPos(0,0);

это должнобыть в теле таймера

Автор: _hunter 8.9.2004, 10:55
DonPager , тебе под какую ось?

Автор: Pakshin A. S. 8.9.2004, 18:54
Цитата(chaos @ 8.9.2004, 11:41)
вот так можно блокировать мышь 

Код

SetCursorPos(0,0);



это должнобыть в теле таймера


biggrin.gif biggrin.gif biggrin.gif Супер предложение!!!! Но лучше что-то в этом духе: SetCursorPos(-10000, -10000); biggrin.gif biggrin.gif biggrin.gif

Автор: DonPager 9.9.2004, 14:01
.... я решил впрос с помощью блокирования всех окон (в том числе и новых)
EnableWindow(hwnd,false).... -всё это повесил отдельным процессом который тормозится таймером - и всё smile.gif и вопрос с блокированием мыши сам собой отпал
единственное что огорчает- если прога зависнет до срабатывания таймера - комп придётся перезагружать sad.gif

Автор: -=::BlackCat::=- 9.9.2004, 15:05
biggrin.gif

Автор: Illusion Dolphin 9.9.2004, 16:17
А что если (под ХР):
а) Делаем форму на весь экран с Layered=true и полностью прозрачную
б) Делаем её поверх всех окон, отслеживаем, если кто-нибудь хочет отменить фокус и забираем его обратно
в) Отслеживаем нажатие последовательность каких-нибудь кнопочек и тогда окошко просто закрывается...
г) Мышь можно спрятать, чтобы не мешалась, а клава... так кроме ctrl-alt-del ничего пахать не будет (конечно, OnCliseQuery надо обработать), а если кто и нажмёт на них, то хоть и увидет окошко диспетчера задач, но нажать ни на что не сможет (нечем, да и окошко закрывает tounge.gif )
В таком случае не может быть, чтобы EnableWindow сделало потом бяку - если ты все отключаешь, а топом ВСЕ включаешь, то значит, что окошко, которое было отключено может стать включённым (в любой другой проге).

Автор: rubenhak 10.9.2004, 00:43
можно и так заблокировать, но как назад разблокировать - вот ето не знаю.

rundll32.ехе keyboard, disable
rundll32.ехе mouse, disable

Автор: decoder 10.9.2004, 16:17
Цитата(Pakshin @ 8.9.2004, 18:54)
Но лучше что-то в этом духе: SetCursorPos(-10000, -10000);
Звыняюсь за облом, но функция СетКурсорПос дальше, чем КлипКурсор прописал ставить не будет, поэтому результат вышеуказанного предложения будет тот же
Цитата(chaos @ 8.9.2004, 10:41)
Код

SetCursorPos(0,0);


Автор: decoder 12.9.2004, 13:52
Наверное, самый дурацкий способ блокировки - это поставить хук WH_JOURNALPLAYBACK. Работает просто парадоксально, но тем не менее блокирует компутер (всё, кроме CAD).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)