Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Maza Faka
примерно так, но функция сама не ищет во вложенных контейнерах,
в твоем случае она возвратит только объект "Вся сеть"
Код: Выделить весь код
Global Const $NO_ERROR            = 0
Global Const $ERROR_NO_MORE_ITEMS = 259
Global Const $ERROR_MORE_DATA     = 234
Global Const $MAX_RESOURCES       = 256
Global Const $NOT_A_CONTAINER     = -1

Global Const $RESOURCETYPE_ANY    = 0
Global Const $RESOURCETYPE_DISK   = 1
Global Const $RESOURCETYPE_PRINT  = 2

Global Const $RESOURCE_CONNECTED  = 1
Global Const $RESOURCE_GLOBALNET  = 2
Global Const $RESOURCE_REMEMBERED = 3
Global Const $RESOURCE_CONTEXT    = 5

Func _WNet_EnumResource($iType = $RESOURCETYPE_ANY, $iScope = $RESOURCE_CONTEXT)
    Local $tBuf = DllStructCreate("hwnd"), $pBuf = DllStructGetPtr($tBuf)
    Local $aRet = DllCall("mpr.dll", "int", "WNetOpenEnum", "int", $iScope, "int", $iType, "int", 0, "ptr", 0, "ptr", $pBuf)
    If $aRet[0] Then Return SetError(2, $aRet[0])

    Local $hEnum  = DllStructGetData($tBuf,1)
    Local $tCount = DllStructCreate("int"), $pCount = DllStructGetPtr($tCount)
    Local $tBSize = DllStructCreate("int"), $pBSize = DllStructGetPtr($tBSize)

    DllStructSetData($tCount, 1, -1)
    $aRet = DllCall("mpr.dll", "int", "WNetEnumResource", "hwnd", $hEnum, "ptr", $pCount, "ptr", $pBuf, "ptr", $pBSize)

    If $aRet[0]=0 Then
        DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
        Return SetError(1, 0)
    ElseIf $aRet[0]<>$ERROR_MORE_DATA Then
        DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
        Return SetError(3, $aRet[0])
    EndIf

    DllStructSetData($tCount, 1, -1)
    $tBuf = DllStructCreate("byte["& DllStructGetData($tBSize,1) &"]")
    $pBuf = DllStructGetPtr($tBuf)
    $aRet = DllCall("mpr.dll", "int", "WNetEnumResource", "hwnd", $hEnum, "ptr", $pCount, "ptr", $pBuf, "ptr", $pBSize)
    If $aRet[0] Then
        DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
        Return SetError(4, $aRet[0])
    EndIf
    DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
    Return SetError(0, DllStructGetData($tCount,1), $tBuf)
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:29, 04-07-2008 | #695