|
Сайт Город Рязань | Главная Помощь Поиск Участники Календарь Текстовая версия форума Сервер Знакомств Чат Рязани |
Здравствуйте Гость ( Вход | Регистрация ) |
Ответить · Новая Тема ·Создать опрос |
Кактус |
Дата: 21.01.2006 - 12:57
|
Unregistered |
Вот есть у меня такой вопросик: как бы мне от Windows получить список компьютеров, подключенных к сети. Желательно на Паскале, но тексты Си, Basica, Java и т.д. тоже принимаются.
Уже спасибо. |
· · · ·
|
bukan |
Дата: 22.01.2006 - 18:51
|
||
Offline Administrator Профиль Группа: Администраторы Сообщений: 1991 Пользователь №: 1 Регистрация: 17.09.2004 |
Вот, порылся у себя на компе в доках, может тебе поможет:
-------------------- |
||
DjPUH-RYAZAN |
Дата: 10.09.2006 - 05:16
|
Offline Новичок Профиль Группа: Пользователи Сообщений: 29 Пользователь №: 762 Регистрация: 15.01.2006 |
Можа поможет...
unit FindComp; interface uses Windows, Classes; function FindComputers: DWORD; var Computers: TStringList; implementation uses SysUtils; const MaxEntries = 250; function FindComputers: DWORD; var EnumWorkGroupHandle, EnumComputerHandle: THandle; EnumError: DWORD; Network: TNetResource; WorkGroupEntries, ComputerEntries: DWORD; EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource; EnumBufferLength: DWORD; I, J: DWORD; begin Computers.Clear; FillChar(Network, SizeOf(Network), 0); with Network do begin dwScope := RESOURCE_GLOBALNET; dwType := RESOURCETYPE_ANY; dwUsage := RESOURCEUSAGE_CONTAINER; end; EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network, EnumWorkGroupHandle); if EnumError = NO_ERROR then begin WorkGroupEntries := MaxEntries; EnumBufferLength := SizeOf(EnumWorkGroupBuffer); EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength); if EnumError = NO_ERROR then begin for I := 1 to WorkGroupEntries do begin EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @EnumWorkGroupBuffer[I], EnumComputerHandle); if EnumError = NO_ERROR then begin ComputerEntries := MaxEntries; EnumBufferLength := SizeOf(EnumComputerBuffer); EnumError := WNetEnumResource(EnumComputerHandle, ComputerEntries, @EnumComputerBuffer, EnumBufferLength); if EnumError = NO_ERROR then for J := 1 to ComputerEntries do Computers.Add(Copy(EnumComputerBuffer[J].lpRemoteName, 3, Length(EnumComputerBuffer[J].lpRemoteName) - 2)); WNetCloseEnum(EnumComputerHandle); end; end; end; WNetCloseEnum(EnumWorkGroupHandle); end; if EnumError = ERROR_NO_MORE_ITEMS then EnumError := NO_ERROR; Result := EnumError; end; initialization Computers := TStringList.Create; finalization Computers.Free; end. Вот ещё.... function TNetForm.FillNetLevel(xxx: PNetResource; List: TListItems): Word; type PNRArr = ^TNRArr; TNRArr = array[0..59] of TNetResource; var x: PNRArr; tnr: TNetResource; I: integer; EntrReq, SizeReq, twx: THandle; WSName: string; LI: TListItem; begin Result := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER, xxx, twx); if Result = ERROR_NO_NETWORK then Exit; if Result = NO_ERROR then begin New(x); EntrReq := 1; SizeReq := SizeOf(TNetResource) * 59; while (twx <> 0) and (WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do begin for i := 0 to EntrReq - 1 do begin Move(x^[i], tnr, SizeOf(tnr)); case tnr.dwDisplayType of RESOURCEDISPLAYTYPE_SERVER: begin if tnr.lpRemoteName <> '' then WSName := tnr.lpRemoteName else WSName := tnr.lpComment; LI := list.Add; LI.Caption := copy(WSName, 3, length(WSName) - 2); //list.Add(WSName); end; else FillNetLevel(@tnr, list); end; end; end; Dispose(x); WNetCloseEnum(twx); end; end; Пример вызова: FillNetLevel(nil, ListView1.Items); Ну и ещё вот... function EnumerateFunc(hwnd: HWND; hdc: HDC; lpnr: PNetResource): Boolean; const cbBuffer: DWORD = 16384; // 16K is a good size var hEnum, dwResult, dwResultEnum: DWORD; lpnrLocal: array [0..16384 div SizeOf(TNetResource)] of TNetResource; // pointer to enumerated structures i: integer; cEntries: Longint; begin centries := -1; // enumerate all possible entries // Call the WNetOpenEnum function to begin the enumeration. dwResult := WNetOpenEnum( RESOURCE_CONTEXT, // Enumerate currently connected resources. RESOURCETYPE_DISK, // all resources 0, // enumerate all resources lpnr, // NULL first time the function is called hEnum // handle to the resource ); if (dwResult <> NO_ERROR) then begin // Process errors with an application-defined error handler Result := False; Exit; end; // Initialize the buffer. FillChar(lpnrLocal, cbBuffer, 0); // Call the WNetEnumResource function to continue // the enumeration. dwResultEnum := WNetEnumResource(hEnum, // resource handle DWORD(cEntries), // defined locally as -1 @lpnrLocal, // LPNETRESOURCE cbBuffer); // buffer size // This is just printing for i := 0 to cEntries - 1 do begin // loop through each structure and // get remote name of resource... lpnrLocal[i].lpRemoteName) end; // Call WNetCloseEnum to end the enumeration. dwResult := WNetCloseEnum(hEnum); if (dwResult <> NO_ERROR) then begin // Process errors... some user defined function here Result := False; end else Result := True; end; Может это подойти... var Computer: array[1..500] of string[25]; ComputerCount: Integer; procedure FindAllComputers(Workgroup: string); var EnumHandle: THandle; WorkgroupRS: TNetResource; Buf: array[1..500] of TNetResource; BufSize: Integer; Entries: Integer; Result: Integer; begin ComputerCount := 0; Workgroup := Workgroup + #0; FillChar(WorkgroupRS, SizeOf(WorkgroupRS), 0); with WorkgroupRS do begin dwScope := 2; dwType := 3; dwDisplayType := 1; dwUsage := 2; lpRemoteName := @Workgroup[1]; end; WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @WorkgroupRS, EnumHandle); repeat Entries := 1; BufSize := SizeOf(Buf); Result := WNetEnumResource(EnumHandle, Entries, @Buf, BufSize); if (Result = NO_ERROR) and (Entries = 1) then begin Inc(ComputerCount); Computer[ComputerCount] := StrPas(Buf[1].lpRemoteName); end; until (Entries <> 1) or (Result <> NO_ERROR); WNetCloseEnum(EnumHandle); end; { Find All Computers } Если чё, пиши... |
Рейтинг: (0%) |
|
Infest |
Дата: 24.11.2006 - 00:38
|
Offline Новичок Профиль Группа: Пользователи Сообщений: 24 Пользователь №: 2552 Регистрация: 1.10.2006 |
Народ, вот я намыл Делфу седьмую, кой какие навыки програмирования у меня есть (в Паскале чуток, да ХТМЛ), с чего мне начать Делфу? А то я чего-то немного не воткнул сразу... =)
-------------------- I'm blind? But not dead...
|
Рейтинг: (0%) |
|
Grey |
Дата: 25.11.2006 - 00:13
|
Offline Новичок Профиль Группа: Пользователи Сообщений: 6 Пользователь №: 3196 Регистрация: 19.11.2006 |
купи книгу Бобровского. Для начала самое то
-------------------- Рекурсия-удел богов, смертным доступна лишь итерация.
|
Рейтинг: (0%) |
|
Infest |
Дата: 25.11.2006 - 01:01
|
Offline Новичок Профиль Группа: Пользователи Сообщений: 24 Пользователь №: 2552 Регистрация: 1.10.2006 |
Чё за Бобровскго? Скажи плиз полное название.
-------------------- I'm blind? But not dead...
|
Рейтинг: (0%) |
|
Grey |
Дата: 27.11.2006 - 22:31
|
Offline Новичок Профиль Группа: Пользователи Сообщений: 6 Пользователь №: 3196 Регистрация: 19.11.2006 |
C. Бобровский "Учебный курс" я за 140 руб. покупал в Барсе
-------------------- Рекурсия-удел богов, смертным доступна лишь итерация.
|
Рейтинг: (0%) |
|
Night_storm |
Дата: 2.04.2007 - 23:09
|
Offline Новичок Профиль Группа: Пользователи Сообщений: 36 Пользователь №: 4673 Регистрация: 21.03.2007 |
Я рекомендую "Билию Делфи" М. Фленова, а потом его же "Делфи глазами хакера", а так же "Делфи:народные советы" А.Шкрыля. Все продается в Барсе.
|
Рейтинг: (0%) |
|
GrayDoberman |
Дата: 4.04.2007 - 11:12
|
Offline Старик Профиль Группа: Пользователи Сообщений: 178 Пользователь №: 871 Регистрация: 9.02.2006 |
Ну про книги можно вечно говорить, вот тебе сайтик с корторого можно слить клансную прогу с интереснейшими примерами: http://delphiworld.narod.ru/
-------------------- Мир Lineage2 загадочен и интересен, пробум его познать на сервере www.perious.ru
Destroer - Destroer 62lvl HaosDegradar - Overlord 72lvl |
Рейтинг: (0%) |
|
Zemond |
Дата: 20.05.2008 - 23:16
|
Offline Пользователь Профиль Группа: Пользователи Сообщений: 52 Пользователь №: 4229 Регистрация: 12.01.2007 |
А еще лучше начать с чужих программ и манов с инета + книжек издательства "ПИТЕР" очень кстати не плохие книжечки(их стоимость кстати очень и очень не большая, в чем их большой плюс), конечно совсем начальный уровень, но в начале очень не плохо понять что к чему на нормальном русском языке а не на техническом в котором понимаешь только предлоги и не которые слова..=( ну а потом уже можно взять что-то посерьезней. Вот кстати не плохой сайтик электронных книжек по дельфям и не только: http://c-books.info/books/load.php?ty=delphi
А насчет книжек серии "Глазами хакера" если честно то имхо это бред полный..если не много погуглить то можно найти целые конференции по обсуждению этих книг, но вот хороших отзывов по ним мало, да и будучи сам в барсе просмотрел парочку, материал мне не очень понравился, половина статей содрана с инета, что-то разбиралось в журнале "Хакер" есть лишь крупица интересного и то, до этого при желании можно додуматься самому, а не тратить 150р если не больше на эту книгу. -------------------- интернет как смерть..забирает лучших
|
Рейтинг: (0%) |
|
Опции темы | Ответить · Новая Тема ·Создать опрос |