Имя рабочей группы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Имя рабочей группы

Сообщение Sirik » 06.08.2004 (Пт) 13:32

Как узнать имя рабочей группы, в которой находешся в данные момент?

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 06.08.2004 (Пт) 17:00

Всем спасибо, сам нашёл метод...

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 06.08.2004 (Пт) 17:03

Нашел -- так поделись, мне тоже интересно :)
Или убери топик -- зачем форум засорять пустыми темами?

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 06.08.2004 (Пт) 17:05

Leon_ писал(а):Нашел -- так поделись, мне тоже интересно :)
Или убери топик -- зачем форум засорять пустыми темами?

Поделится я конечно могу... Но мне кажется, что эта тема далеко не пустая.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 06.08.2004 (Пт) 17:09

"Пустая" -- в смысле:
--"Как сделать?"
--"А все уже сам сделал, спасибо"
Пользователь открывает топик, ему (и мне) интересно -- а там только анонс и финальные титры :?
Рассказывай уж подробно, что и как.. :lol:

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 06.08.2004 (Пт) 17:19

Ладно, уговорил:
1. узнаём имя компютера (своё собственное) через GetComputerName
2. узнаём собственно имя рабочей группы, через NetWkstaGetInfo.

У меня в проекте всё "сложено" вместе, завтра "растену" по процедурам и выложу (если повезёт может и сегодня)

А вобщем вот код:
Код: Выделить всё
Option Explicit

Private Type WKSTA_INFO_102
   wki100_platform_id As Long
   pwki100_computername As Long
   pwki100_langroup As Long
   wki100_ver_major As Long
   wki100_ver_minor As Long
   pwki102_lanroot As Long
   wki102_logged_on_users As Long
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function NetWkstaGetInfo Lib "netapi32" (ByVal Servername As String, ByVal Level As Long, lpBuf As Any) As Long
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal HostName As String) As Long


Private Function Pointer2StringW(ByVal Address As Long) As String
    Dim Buffer() As Byte, Count As Long
    Count = lstrlenW(Address) * 2
    If Count Then
        ReDim Buffer(0 To (Count - 1)) As Byte
        CopyMemory Buffer(0), ByVal Address, Count
        Pointer2StringW = Buffer
    End If
End Function

Private Function Get_Name() As String
    Dim dwLen As Long, strString As String
    dwLen = 32
    strString = String(dwLen, "X")
    GetComputerName strString, dwLen
    strString = Left(strString, dwLen)
    Get_Name = strString
End Function

Private Function Get_Domain() As String
    Dim pWrkInfo As Long, WrkInfo(0) As WKSTA_INFO_102, lResult As Long
    Dim strComputername As String
    strComputername = Get_Name
    lResult = NetWkstaGetInfo(StrConv("\\" & strComputername, vbUnicode), 102, pWrkInfo)
    If lResult = 0 Then
       Dim cname As String
       cname = String$(255, 0)
       CopyMemory WrkInfo(0), ByVal pWrkInfo, ByVal Len(WrkInfo(0))
       CopyMemory ByVal cname, ByVal WrkInfo(0).pwki100_langroup, ByVal 255
       Get_Domain = StripTerminator(StrConv(cname, vbFromUnicode))
     End If
End Function

Private Function StripTerminator(sInput As String) As String
    Dim ZeroPos As Integer
    ZeroPos = InStr(1, sInput, vbNullChar)
    If ZeroPos > 0 Then StripTerminator = Left$(sInput, ZeroPos - 1) Else StripTerminator = sInput
End Function


Private Sub Form_Load()
    MsgBox Get_Domain
End Sub

Только на Windows Me есть проблемма с netapi32

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 06.08.2004 (Пт) 17:37

:roll: Мм, вот это интересно. В Win9x можно попробовать вызовы из NetApi.dll
Код: Выделить всё
Declare Function NetWkstaGetInfo Lib "NetAPI.DLL" _
   (ByVal lServer As Long, ByVal sLevel As Integer, _
   ByVal pbBuffer As Long, ByVal cbBuffer As Integer, _
   pcbTotalAvail As Integer) As Integer

А вот еще и пример есть -- MSDN, Q101676

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 06.08.2004 (Пт) 18:18

в 98 нет NETAPI.DLL , есть аналог, но не помню как называется...wnet.dll чтот то типа того
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 07.08.2004 (Сб) 8:21

Странно :shock:
На соседних компах (Win 98 и Me) netapi32 есть, правда есть проблемма, её размер 20480, у меня же (Win XP) размер 309248.
Выдается ошибка "нельзя найти точку входа в библиотеку". (это при тесте на 98 и Me).
Как с эти бороться? Может... сначало надо опредилить версию Окон, и только потом смотреть какую dll использовать. Кстати, у кого-то есть пример определение версии ОС?
Например если 98, то используем netapi, а если XP, то netapi32 ?

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 09.08.2004 (Пн) 10:18

API-Guide писал(а):NetWkstaGetInfo
Requires Windows NT 3.1 or later; Win9x/ME: Not supported
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 1

    TopList