Is it possible to get a string representation of a network drive mapping in a program?
(ie: F: "\\SERVER1\VOL_INFO")
------------------
(ie: F: "\\SERVER1\VOL_INFO")
------------------
#INCLUDE "WIN32API.INC" FUNCTION PBMAIN() AS LONG LOCAL lpLocalPath AS ASCIIZ*%MAX_PATH LOCAL dwInfoLevel AS DWORD LOCAL lpBuffer AS UNIVERSAL_NAME_INFO LOCAL lpBufferSize AS DWORD LOCAL szBuf AS ASCIIZ*%MAX_PATH dwInfoLevel=%UNIVERSAL_NAME_INFO_LEVEL lpBufferSize=%MAX_PATH lpBuffer.lpUniversalName=VARPTR(szBuf) lpLocalPath="F:" IF WNetGetUniversalName(lpLocalPath,dwInfoLevel,lpBuffer,lpBufferSize)<>0 THEN MSGBOX "Error Occurred." ELSE MSGBOX "Success. "+szBuf END IF END FUNCTION
#COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" FUNCTION PBMAIN() AS LONG LOCAL lpLocalPath AS ASCIIZ * %MAX_PATH LOCAL lpBuffer AS UNIVERSAL_NAME_INFO LOCAL dwInfoLevel AS DWORD LOCAL lpBufferSize AS DWORD dwInfoLevel = %UNIVERSAL_NAME_INFO_LEVEL 'dwInfoLevel = %REMOTE_NAME_INFO_LEVEL lpBufferSize = %MAX_PATH lpLocalPath = "F:" IF WNetGetUniversalName(lpLocalPath, dwInfoLevel, lpBuffer, lpBufferSize) = %NO_ERROR THEN MSGBOX "Success : " & [email protected] ELSE MSGBOX "Error Occurred." END IF END FUNCTION
TYPE REMOTE_NAME_INFO lpUniversalName AS ASCIIZ PTR '<<< lpConnectionName AS ASCIIZ PTR lpRemainingPath AS ASCIIZ PTR END TYPE TYPE UNIVERSAL_NAME_INFO lpUniversalName AS ASCIIZ PTR '<<< END TYPE
'========================================================= #Compile Exe #Dim All #Include "WIN32API.INC" '========================================================= Function GetUNC(ByVal sDriveLetter As String) As String Local iRet As Long Local zLocalDrive As Asciiz * 10 Local UNI As UNIVERSAL_NAME_INFO Ptr Local zBuff As Asciiz * %MAX_PATH Local dBufSize As Dword If Len(sDriveLetter) <> 2 Or Mid$(sDriveLetter,2,1) <> ":" Then Exit Function zLocalDrive = sDriveLetter UNI = VarPtr(zBuff) dBufSize = %MAX_PATH If WNetGetUniversalName(zLocalDrive, ByVal %UNIVERSAL_NAME_INFO_LEVEL, zBuff, dBufSize) = %NO_ERROR Then Function = @[email protected] Else iRet = GetLastError() If iRet = 2250 Then 'Drive mapping does not exist so report nothing back for answer Else 'unknown error so report it Function = "Error" + Str$(iRet) End If End If End Function '========================================================= Function PbMain() Local sLetter As String sLetter = InputBox$("Type the Drive letter to get the UNC name for: (Ex: J [img]http://www.powerbasic.com/support/forums/smile.gif[/img]",,"F:") MsgBox GetUNC(sLetter),,sLetter End Function '=========================================================
LOCAL lpBuffer AS UNIVERSAL_NAME_INFO LOCAL lpBufferSize AS DWORD LOCAL tmppath AS ASCIIZ*%MAX_PATH lpBufferSize = %MAX_PATH lpBuffer.lpUniversalName=VARPTR(tmppath)
lpBufferSize = SIZEOF(lpBuffer) -1 ' subtract one for the null terminator
#COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" FUNCTION PBMAIN() AS LONG LOCAL UniPointer AS UNIVERSAL_NAME_INFO POINTER LOCAL szLocalPath AS ASCIIZ * 3 LOCAL szBuffer AS ASCIIZ * %MAX_PATH + 5 'Add 5 becose DWord address and terminating zero LOCAL dwBufferSize AS DWORD LOCAL dwInfoLevel AS DWORD szLocalPath = "P:" 'Put a valid network drive, ex: "P:" dwInfoLevel = %UNIVERSAL_NAME_INFO_LEVEL dwBufferSize = SIZEOF(szBuffer) UniPointer = VARPTR(szBuffer) IF WNetGetUniversalName(szLocalPath, dwInfoLevel, szBuffer, dwBufferSize) = %NO_ERROR THEN MSGBOX "Success : " & @[email protected] & $CRLF & _ "Len =" & STR$(LEN(@[email protected])) ELSE MSGBOX "Error Occurred !" END IF LOCAL sBuffer AS STRING sBuffer = PEEK$(UniPointer, dwBufferSize) REPLACE $NUL WITH "." IN sBuffer MSGBOX sBuffer END FUNCTION
Buffer = "011201170125Adam.William.Bellisle................" First DWord is 0112 and it is the address of the first name Second DWord is 0117 and it is the address of the second name Third DWord is 0125 and it is the address of the third name
We process personal data about users of our site, through the use of cookies and other technologies, to deliver our services, and to analyze site activity. For additional details, refer to our Privacy Policy.
By clicking "I AGREE" below, you agree to our Privacy Policy and our personal data processing and cookie practices as described therein. You also acknowledge that this forum may be hosted outside your country and you consent to the collection, storage, and processing of your data in the country where this forum is hosted.
Comment