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

Блокировать рабочую станцию

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

Блокировать рабочую станцию

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  The LockWorkStation function locks the workstation's display, 
  protecting it from unauthorized use. 
  This function has the same result as pressing Ctrl+Alt+Del and 
  clicking Lock Workstation. 
  To unlock the workstation, the user must log in. 

  Windows NT/2000/XP: Included in Windows 2000 and later. 
  Windows 95/98/Me: Unsupported. 
}


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   LockWorkStation;
 end;

 { Loading LockWorkStation dynamically}

 function LockWS: Boolean;
 // by Thomas Stutz, SDC 
type
   TLockWorkStation = function: Boolean;
 var
   hUser32: HMODULE;
   LockWorkStation: TLockWorkStation;
 begin
   // Here we import the function from USER32.DLL 
  hUser32 := GetModuleHandle('USER32.DLL');
   if hUser32 <> 0 then
   begin
     @LockWorkStation := GetProcAddress(hUser32, 'LockWorkStation');
     if @LockWorkStation <> nil then
     begin
       LockWorkStation;
       Result := True;
     end;
   end;
 end;

Привет! Я переведу текст на русский язык:

Статическое реализация Первая часть кода определяет процедуру, которая вызывает функцию LockWorkStation, когда кнопка нажата:

procedure TForm1.Button1Click(Sender: TObject);
begin
  LockWorkStation;
end;

Эта реализация прямолинейна и работает как ожидалось.

Динамическое загрузка LockWorkStation Вторая часть кода демонстрирует, как загрузить функцию LockWorkStation динамически с помощью функций GetModuleHandle и GetProcAddress:

function LockWS: Boolean;
type
  TLockWorkStation = function: Boolean;
var
  hUser32: HMODULE;
  LockWorkStation: TLockWorkStation;
begin
   // Здесь мы импортируем функцию из USER32.DLL
  hUser32 := GetModuleHandle('USER32.DLL');
  if hUser32 <> 0 then
  begin
     @LockWorkStation := GetProcAddress(hUser32, 'LockWorkStation');
    if @LockWorkStation <> nil then
    begin
      LockWorkStation;
      Result := True;
    end;
  end;
end;

Эта реализация загружает модуль USER32.DLL и получает указатель на функцию LockWorkStation с помощью функции GetProcAddress. Если функция найдена, она вызывает функцию и возвращает True. В противном случае возвращает False.

Замечания

  • Функция LockWorkStation является частью Windows API и доступна только в Windows NT/2000/XP и поздних версиях.
  • В Windows 95/98/Me эта функция не поддерживается.
  • Динамическая загрузка реализует более гибкий способ вызывать функцию LockWorkStation, поскольку позволяет загружать функцию на этапе выполнения, а не использовать статический ссылок.

В целом, предоставленный код демонстрирует два способа блокировки дисплея рабочего станции с помощью языка программирования Delphi. Первая реализация прямолинейна и использует статический ссылок на функцию LockWorkStation, а вторая реализация загружает функцию динамически с помощью Windows API-функций.

Блокировка рабочей станции - функция, которая защищает ее от неавторизованного использования, требуя для разблока логина пользователя.


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

Получайте свежие новости и обновления по 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 20:40:20/0.0060341358184814/0