Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.009 c
3-77272
Катерина
2002-05-29 14:20
2002.06.24
Считывание dBase таблиц


4-77672
IronHawk
2002-04-24 11:59
2002.06.24
Как рисовать на рабочем столе ? Запускаешь прогу и она начинает..


6-77539
zam
2002-04-18 02:44
2002.06.24
Отправка письма с уведомлением при получении


3-77276
Lena
2002-05-30 14:13
2002.06.24
Чтение из Blob-поля


1-77429
perov
2002-06-11 10:05
2002.06.24
Быстрое удаление дупликатов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский