По нажатии кнопки Убить в программе, написанной в разделе 5.9.1, будем закрывать сессию. Сразу же отмечу, что если пользователь открыл какой-нибудь файл, то сессия, скорее всего, не закроется из-за блокировки в системе. При простом просмотре или зависании сессии закрытие должно пройти успешно.

Итак, по нажатии кнопки Убить пишем код из листинга 5.23.

Листинг 5.23. Закрытие сессии

procedure TMonitorForm.bnKi11 Click(Sender: TObject): var
wcNameNT: PWideChar;
begin
if lwSessions.Selected = nil then exit:
if bNT then begin
wcNameNT := PWChar(WideString('\\'+
1wSessions.Items.Item[lwSessions.Selected.Index] Caption)): NetSessionDelNTCnil. wcNameNT. nil):
end
else
begin
NetSessionDel(nil.
PAnsiChar(lwSessions.Items.Item[lwSessions.Sel ected.Index].Caption). Sess i onKeys[1wSess i ons.Selected.Index]):
end:
end.

Здесь мы как раз и пользуемся функциями NetSessionDel NT и NetSessionDel, которые были получены из библиотеки по событию OnShow.

Функции NetSessionDel NT для NT-систем и NetSessionDel для Эх-систем объявлены следующим образом:

function NetSessionDelNT( ServerName.
UncClientName. UserName: PWideChar ): DWORD;
stdcall;
functi on NetSessi onDel(
pszServer: PChar;
pszClientName: PChar:
sReserved: Small Int )- DWORD: stdcall:

Рассмотрим назначение параметров для обеих функций.

Первый параметр - это имя компьютера, на котором нужно произвести закрытие сессии. Для локальной машины достаточно указать нулевое значение.

Второй параметр - имя клиентского компьютера, соедицение с которым нужно закрыть. Для NT-систем имя должно иметь формат UNC (Universal Naming Convention - правила универсального именования), то есть начинаться с двойного слэша (\\). Для Windows 9х указывается имя без добавления слэшей.

Третий параметр в NT-системах необязателен, но может содержать имя пользователя. В Windows 9х указывается ключевое поле, связанное с данным соединением.

Попробуйте запустить программу и закрыть какое-нибудь соединение. Как я уже говорил, если с этим соединением не связаны открытые ресурсы, то оно должно успешно закрыться.

ПРИМЕЧАНИЕ--

Исходный код рассмотренного здесь примера находится на компакт-диске в каталоге Sources\ch05\MonitorSession.

5.9.2. Преобразование времени || Оглавление || 5.9.4. Просмотр открытых ресурсов


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31