| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > сеть (не 220v) :)) |
| Автор: oleg1973 21.8.2003, 12:15 |
| искал везде но не нашел вот решил и народа спросить кароче суть : как правильно работать с WNetOpenEnum,WNetEnumResource делаю invoke WNetOpenEnumA,RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,0,lphEnum получаю хедер скажем так потом invoke WNetEnumResourceA,[lphEnum],count=0xffffffffh,buffer,bufsize=16384 получаю списочек root нахожу в нем контейнер RESOURCEUSAGE_CONTAINER и после этого тормоза тоесть не пойму нада ли закрыват хедер и делать снова WNetOpenEnum но уже с заполненой struc NETRESOURCE или просто делать WNetEnumResource опять же с заполненой struc NETRESOURCE чтоб получить список компьютеров в сети в инете чтото ниче конкретного не нашел такчто ткните носом плиз |
| Автор: p0s0l 21.8.2003, 12:45 |
| WNetOpenEnum WNetEnumResource WNetCloseEnum потом берешь что-нибудь из результатов енума и WNetOpenEnum (c одним из результатов предыдущего енума) WNetEnumResource WNetCloseEnum |
| Автор: p0s0l 21.8.2003, 13:10 | ||
а лучше сделать рекурсивную процедурину, которая обшаривала бы всю сеть:
|
| Автор: oleg1973 21.8.2003, 16:30 |
| if (buf[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then NetEnumerate(buf[i]); NetEnumerate это из какой dll? |
| Автор: p0s0l 21.8.2003, 20:53 | ||||
это твоя рекурсивная процедура |
| Автор: oleg1973 22.8.2003, 16:38 |
| не работает делаю WNetOpenEnumA(2,0,0,0,&lphEnum); WNetEnumResourceA(lphEnum,&lpcCount,buffer,&bsize); получаю в буфере структуру вопрос ! надо ли делать WNetCloseEnum(&lphEnum) ? идем дальше проверяю то что в буфере нахожу dwUsage=RESOURCEUSAGE_CONTAINER а теперь вопрос знатокам! дальше как? я так понимаю что найденый dwUsage=RESOURCEUSAGE_CONTAINER нада передать в WNetEnumResourceA(lphEnum,&lpcCount,buffer,&bsize); как? |
| Автор: p0s0l 22.8.2003, 18:16 | ||
Насчет моего примера: я тебе привел пример на глаз, не проверяя, и не знаю, в чем у тебя была проблема, но вот этот пример работает (находит все компы в сети):
Как видишь отличий от предыдущего практически нет, только добавлен код для начального енума. Вызывается это дело так: NetEnumerate (nil); Извини, что на Delphi, но думаю ничего сложного тут нет... Вместо Form1.ListBox1.Items.Add(buf[i].lpRemoteName) подставь свой код - здесь в buf[i].lpRemoteName содержиться имя компа. Можешь также юзать совместно с NetServerGetInfo для получения еще кое-какой дополнительной инфы... |
| Автор: SCHEPA 22.8.2003, 20:42 | ||||
Надо.
Идем... WNetEnumResourceA(lphEnum,&lpcCount,buffer,&bsize) - возвращает тебе в buffer массив структур NETRESOURCE. Выбираешь из них нужную и снова начинается WNetOpenEnum - получаешь хендл. WNetEnumRecource - получаешь сетевые ресурсы. WNetCloseEnum - финиш. |
| Автор: SCHEPA 22.8.2003, 20:46 |
| Вообще у меня есть прога на Билдере, так сказать первый опыт в этом деле. Там все работает. Если надо могу скинуть. |
| Автор: oleg1973 22.8.2003, 22:00 |
| все народ сделал всем биг сенкс за советы мне в принципе сам алгоритм тока нужен был на асме пишется все |