Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как заблокировать компьютер

Delphi , ОС и Железо , Компьютер

Как заблокировать компьютер


Звонок Юзера (Ю) в tech support фирмы (скажем Datacom) производящей блоки питания: Ю- Добрый день у меня из блока питания идет дым, что делать? Сотрудник (С) - Вам нужен новый блок питания. Ю - Нет не нужен, мне нужно что бы из старого не шел дым. С- Вы меня наверное не поняли но Вам нужен новый блок питания. Ю- Зачем мне новый, Вы просто скажите что нужно сделать что бы из старого дым не шел. С- Наберите в autoexec"e строку no smoke... Проходит 5 минут. Ю- Не работает. С- Значит Вам нужен новый блок питания. Ю- Нет мне нужно что бы из старого не шел дым. С- У Вас Винды стоят? Ю- Да. С - Ок. Звоните в tech support Microsoft..там все объяснят.. Через 15 минут... Тот же Юзер - Добрый день, мне нужен новый блок питания. С (удивленно) - Эээ... а можно поинтресоваться... что Вам сказали в Microsoft??? Ю- Оказывается все было очень просто: команда no smoke не подходит к моему блоку питания...


procedure LockPC;
var
  OldValue: LongBool;
begin
  SystemParametersInfo(97, Word(Bool), @OldValue, 0);
  WinExec(PChar('rundll32 mouse,disable'), SW_SHOW);
  WinExec(PChar('rundll32 keyboard,disable'), SW_SHOW);
end;

What an amusing conversation indeed! 😄

Теперь о коде... LockPC - это процедура, которая пытается отключить мышь и клавиатуру на системе Windows. Вот разбивка того, что она делает:

  1. SystemParametersInfo(97, TRUE, @OldValue, 0);: Это вызов функции, которая получает текущие параметры системы (в этом случае, значение "Timeout для экранной саверы"). Часть Word(Bool) - это, вероятно, ошибка - она должна быть просто TRUE или FALSE. Синтаксис @OldValue означает, что функция возвращает значение в памяти, указанной по адресу OldValue.
  2. WinExec(PChar('rundll32 mouse,disable'), SW_SHOW);: Это выполняет командную утилиту под названием "rundll32" (функцию Windows API) с аргументами "mouse,disable" и отображает ее в виде окна (SW_SHOW означает отобразить окно). Эффект должен быть отключением мыши.
  3. WinExec(PChar('rundll32 keyboard,disable'), SW_SHOW);: Это выполняет еще один экземпляр "rundll32" с аргументами "keyboard,disable" и отображает его в виде окна, пытаясь отключить клавиатуру.

Теоретически эти вызовы должны отключить оба устройства на системе. Однако, есть несколько проблем с этим кодом:

  • Вызов SystemParametersInfo - это, вероятно, неправильный (как упоминалось ранее).
  • Утилита "rundll32" может не работать так, как ожидалось.
  • Эти функции могут требовать привилегированных прав или административных прав для выполнения успешно.

Чтобы достичь цели блокировки компьютера (например, для безопасности), обычно используются API, такие как LockWorkStation или ExitWindowsEx, в зависимости от желаемого поведения. Например:

procedure LockPC;
begin
  LockWorkStation; // блокирует рабочую станцию, требуя повторного входа
end;

Обратите внимание, что это код не предназначен для использования в производственной среде и должен быть тщательно проверен и протестирован перед использованием. 😊

Статья рассказывает о способах блокировки компьютера и описывает программный код на языке Паскаль для выполнения этой задачи.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Компьютер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-11 19:27:32/0.0060830116271973/0