Mit Hilfe der WIN32API können wir über die dort verfügbare Funktion WNetGetConnection den UNC Namen ( Universal/Uniform Naming Convention ) einer solchen Verbindung abfragen.
FUNCTION GetUNCPath
LPARAMETERS vMappedName as String
* // Datendeklaration und Initialisierung
LOCAL lcUNCBuffer as String, liLength as Integer, ;
lcUNCName as String, llContinue as Boolean, ;
lcMessage as String
lcUNCBuffer = []
liLength = 0
lcUNCName = []
llContinue = .T.
lcMessage = []
* // Deklaration der API-Funktion
TRY
DECLARE INTEGER WNetGetConnection IN WIN32API ;
STRING @ lpLocalName, ;
STRING @ lpRemoteName, ;
INTEGER @ lpliLength
CATCH
TEXT TO lcMessage NOSHOW TEXTMERGE PRETEXT 2
Deklaration von WNetGetConnection in WIN32API
ist fehlgeschlagen. Funktion wird vorzeitig beendet.
ENDTEXT
MESSAGEBOX(lcMessage,0+16+0,[Information])
llContinue = .F.
ENDTRY
* // Umsetzung des lokalen Pfades in einen UNC Pfad
IF llContinue
IF !EMPTY(m.vMappedName) AND VARTYPE([m.vMappedName]) = [C]
lcUNCBuffer = REPL(CHR(0),261)
liLength = LEN(lcUNCBuffer)
m.vMappedName = ALLTRIM(m.vMappedName)
IF LEN(m.vMappedName) = 1
m.vMappedName = m.vMappedName + [:]
ENDIF
TRY
IF WNetGetConnection(m.vMappedName, @lcUNCBuffer, @liLength) = 0
lcUNCName = LEFT(lcUNCBuffer,AT(CHR(0),lcUNCBuffer)-1)
ENDIF
CATCH
TEXT TO lcMessage NOSHOW TEXTMERGE PRETEXT 2
Aufruf von WNetGetConnection in WIN32API
ist fehlgeschlagen. UNC-Pfad konnte nicht
generiert werden.
ENDTEXT
MESSAGEBOX(lcMessage,0+16+0,[Information])
ENDTRY
ENDIF
ENDIF
RETURN lcUNCName
ENDFUNC
Keine Kommentare:
Kommentar veröffentlichen