Форум: "Сети";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
ВнизВсем, кто спрашивал про работу с NetSessionEnum и NetFileEnum. Найти похожие ветки
← →
star (2002-01-23 13:25) [0]Просили тут меня выслать описание, как работать с функциями NetSessionEnum и
NetFileEnum. Из-за недостатка времени некогда заниматься рассылками и писать длинные
статьи. Поэтому я решил привести кусок кода с комментариями, ничего там сложного нет,
разобраться можно. Если будут вопросы, пишите их здесь же.
Кроме того, рекомендую что-либо добавлять в эту ветвь конференции
(например благодарности:-)))), чтобы она не уплыла вниз, и все, кому надо, увидели ее.
Пример приведен для NetSessionEnum. Для NetFileEnum подход тот же.
В общем, удачи, разбирайтесь.
ПРИМЕР ПРИВОДИТСЯ ДЛЯ WINDOWS 98. ДЛЯ NT ДРУГОЙ ПОДХОД И ЗАМОРОЧКИ.
. . .
// Структура, в которую записывается информация о сетевой сессии
// Подробнее смотрите в MSDN.
type
TSessionInfo50 = packed record
Sesi50_cname:PChar;
Sesi50_username:PChar;
sesi50_key:Cardinal;
sesi50_num_conns:word;
sesi50_num_opens:word;
sesi50_time:Cardinal;
sesi50_idle_time:Cardinal;
sesi50_protocol:byte;
pad1:byte;
end;
{ Цитата из MSDN-а:
Members
sesi50_cname
Pointer to a string specifying the name of the computer that established the session.
sesi50_username
Pointer to a string specifying the name of the user who established the session.
sesi50_key
Specifies a long integer returned by the NetSessionEnum function or the NetSessionGetInfo function. This value is required to delete a session. Specify this value in the sReserved parameter when you call the NetSessionDel function.
sesi50_num_conns
Specifies the number of connections made during the session.
sesi50_num_opens
Specifies the number of files opened during the session.
sesi50_time
Specifies the number of seconds the session has been active.
sesi50_idle_time
Specifies the number of seconds the session has been idle.
sesi50_protocol
Specifies the name of the transport that the client is using to communicate with the server.
pad1
Specifies padding inserted to align the next structure.
}
. . .
// Объявим функцию и свяжем ее с dll-кой
function NetSessionEnum (SrverName:PChar;sLevel:dword; pbBuffer:pointer; cbBuffer:dword; EntriesRead,TotalAvial:pointer):integer; stdcall; external "svrapi.dll";
. . .
implementation
. . .
// Пример процедуры, вызывающей эту функцию ...
procedure Enum;
var
SessionInfo: array [0..512] of TSessionInfo50;
EntriesRead,TotalAvial: Word;
i:integer;
begin
// Функции NetSessionEnum передается:
// ServerName = nil для нашей машины.
// sLevel = 50 - для Windows 98 используется структура запроса Session_Info_50, о чем
// мы и сообщаем функции.
// pbBuffer = @SessionInfo - этой функции нужно передавать указатель на массив структур,
// номер которых указан в sLevel - в данном случае, для Win98 это указатель
// на массив структур Session_info_50
// cbBuffer = SizeOf(SessionInfo) - размер массива структур
// EntriesRead = @EntriesRead - Указатель на переменную, в которую запишется количество
сетевых сессий, открытых на данный момент.
// TotalAvial = @TotalAvial - не используется.
NetSessionEnum (nil,50,@SessionInfo,SizeOf(SessionInfo),@EntriesRead,@TotalAvial);
// Получили сессии, можно их обрабатывать ...
for i:=0 to EntriesRead-1 do
with SessionInfo[i] do
begin
Memo1.Lines.Add ("Подключился компьютер: \\"+string(Sesi50_cname));
Memo1.Lines.Add ("Пользователь: "+string(Sesi50_username);
Memo1.Lines.Add ("Открыто файлов: "+IntTostr(sesi50_num_opens);
Memo1.Lines.Add ("----------------------------------------------");
end;
end;
Как видите, все просто, ничего сложного нет.
Немного обескураживает дикая фантазия программистов Microsoft, придумавших дикий подход
и не менее дикий HELP, один взгляд на который бросает в дрожь и навевает апатию и
суицидные мысли.
← →
Samuray1 (2002-02-19 10:57) [1]Спасибо
← →
J'JF (2002-04-17 08:30) [2]А как насчет W2K? Где найти пример? Написано, что подход другой... Ну, понятно, что dll - netapi32, параметры другие, и возвращаемая структура - тоже, но как это все грамотно описать? Кстати, проверил данный пример на 98 - не пашет (на W2K - тем более)...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c