Vor kurzem suchte ich nach einen Quellcode, um Netzlaufwerke unter VB 2005 zu verbinden. Da auch auf dieser Seite nur Tipps mit VB5/6 vorliegen, machte ich mich auf die Suche danach. Im Internet habe ich nun Code dazu gefunden, den ich jetzt hier stark verändert und mit Kommentaren versehen zeigen möchte: ' Benötigte API-Deklarationen Const RESOURCETYPE_DISK = &H1 Public Structure NETRESOURCE Public dwScope As Integer Public dwType As Integer Public dwDisplayType As Integer Public dwUsage As Integer Public lpLocalName As String Public lpRemoteName As String Public lpComment As String Public lpProvider As String End Structure Private Declare Function WNetAddConnection2 Lib "mpr.dll" _ Alias "WNetAddConnection2A" ( _ ByRef lpNetResource As NETRESOURCE, _ ByVal lpPassword As String, _ ByVal lpUserName As String, _ ByVal dwFlags As Integer) As Integer Private Declare Function WNetCancelConnection2 Lib "mpr.dll" _ Alias "WNetCancelConnection2A" ( _ ByVal lpName As String, _ ByVal dwFlags As Integer, _ ByVal fForce As Integer) As Integer ''' <summary> ''' Netzlaufwerk verbinden ''' </summary> ''' <param name="buchstabe">Laufwerksbuchstabe</param> ''' <param name="freigabename">Freigabename</param> Public Function MapDrive(ByVal buchstabe As String, _ ByVal freigabename As String) As Boolean Dim nr As NETRESOURCE ' Netzlaufwerk-Objekt (siehe Struktur) Dim username As String ' Username für die Netzwerkresource Dim password As String ' Passwort für die Netzwerkresource Dim cntresult As Integer ' Resultat des Verbindens ' nr ist das neue Netzlaufwerk der NETRESOURCE Struktur: nr = New NETRESOURCE ' Überprüfen, ob der Laufwerkbuchstabe schon vorhanden ist, ' wenn ja dann Funktionen beenden. If Not buchstabe.EndsWith(":") Then buchstabe = buchstabe & ":" Dim sDrives As String = Join(System.IO.Directory.GetLogicalDrives(), "") If sDrives.Contains(buchstabe) Then Return False ' Dem Objekt nr übergeben wir jetzt die wichtigen Eigenschaften: With nr ' Freigabename setzt sich zusammen aus dem ' Computernamen und dem Freigabename ' Bsp: \\meincomputer\freigabe1 .lpRemoteName = freigabename ' Der gewünschte Laufwerksbuchstabe .lpLocalName = buchstabe End With ' Evtl. Username und Passwort, sollte die Freigabe gesichert sein. username = Nothing password = Nothing ' Typdefinition des Netzlaufwerk (eben Laufwerk) nr.dwType = RESOURCETYPE_DISK ' Die eigentliche Funktion, das Verbinden. ' Das Ergebnis wird in cntresult abgespeichert. ' Bei Erfolg kommt als Return 0 cntresult = WNetAddConnection2(nr, password, username, 0) If cntresult = 0 Then ' Wenn null, war das Verbinden erfolgreich, Return True Else ' anderfalls nicht. Return False End If End Function ''' <summary> ''' Netzlaufwerk trennen ''' </summary> ''' <param name="buchstabe">Netzlaufwerksbuchstabe</param> Public Function UnMapDrive(ByVal buchstabe As String, _ Optional ByVal ForceDisconnect As Boolean = True) As Boolean Dim unctrc As Integer ' Result des Trennes ' Die eigentliche Funktion des Netzlaufwerks trennen. If Not buchstabe.EndsWith(":") Then buchstabe = buchstabe & ":" unctrc = WNetCancelConnection2(buchstabe, 0, ForceDisconnect) If unctrc = 0 Then ' Wenn null, war die Funktion erfolgreich Return True Else ' Andernfalls war die Funktion nicht erfolgreich. Return False End If End Function Beispiel für den Aufruf: ' Netzlaufwerk verbinden Dim sDrive As String = "O:" If MapDrive(sDrive, "\\Rechnername\Freigabe") = True Then MsgBox("Laufwerk verbunden (" & sDrive & ")") End If ' Laufwerk trennen If RemoveNetworkDrive(sDrive, True) = True Then MsgBox("Laufwerk " & sDrive & " wurde erfolgreich getrennt") End If Dieser Tipp wurde bereits 29.664 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Dezemeber 2024 Roland Wutzke MultiSort im ListView-Control Dieses Beispiel zeigt, wie sich verschiedene Sortierfunktionen für ein ListView Control realisieren lassen. Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |