samtrex
Goto Top

VB.NET 2008 Express - Wartezeit u. Netzlaufwerk umbenennen

Hallo zusammen,
ich programmiere mal wieder in VB.NET, diesmal in der 2008'er Express Version.
Dabei habe ich z.Z. 2 Probleme, mit denen ich nicht zurande komme...
1.
Ich benötige eine Wartezeit, um dem AW die Daten anzuzeigen, sonst geht das nämlich zu schnell...
Folgendes habe ich bereits probiert:
Microsoft.VisualBasic.Shell("wartezeit.vbs" & " 3000", AppWinStyle.Hide, True)
Hier bekomme ich eine Meldung, ob ich die Datei auch ausführen möchte. - Aber es klappt, die frm bleibt vollständig stehen...

Microsoft.VisualBasic.Shell("ping.exe" & " localhost -n 3 -w 1000", AppWinStyle.Hide, True)
Wartezeit klappt, aber die in der frm per timer im 0,1 Sek. Takt angepasten Labels verschwinden!

Ich habe es statt mit Microsoft. ... auch mit objSHELL probiert, kommt aufs gleiche raus!

System.Threading.Thread.Sleep(3000)
Wartezeit klappt, aber die in der frm per timer im 0,1 Sek. Takt angepasten Labels verschwinden!

Ich benötige eine Wartezeit bei der ich keine Meldung bekomme und die Labels in der frm stehen bleiben!
Oder liegt das an dem Timer?! Nur warum dann???

2.
Ich mappe verschiedene Netzlaufwerke.
Hierfür habe ich mir eine Function geschrieben, sie trennt bei bedarf das benötigte Laufwerk, mappt das neue und benennt es um.

Function mapLW(ByVal letter As String, ByVal path As String, Optional ByVal name As String = "")
Dim arrPath As Array
arrPath = Split(path, "\")
If name = "" Then name = UBound(arrPath)
If System.IO.Directory.Exists(path) = True Then
If System.IO.Directory.Exists(letter) = True Then
objNET.removenetworkdrive(letter)
End If
objNET.mapnetworkdrive(letter, path)
If System.IO.Directory.Exists(letter) = True Then
objAPP.namespace(letter).self.name = name <- FEHLER
mapLW = path & " mapped to " & letter & " as " & name
Else
mapLW = "Mapping faild!" & vbTab & path & " to " & letter & " as " & name
End If
Else
mapLW = "Server not found!"
End If
End Function

FEHLER: Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt.
Diese Fehlermeldung bekomme ich IMMER!
Die Function habe ich mir aus einem meiner alten Logonscripts (VBS) entliehen und angepasst. Unter VB.NET kann ich ja auch mit objAPP (shell.application) arbeiten...
Ich verstehe nicht wo der Fehler liegen soll.
Das objAPP wird global erstellt...
Vorher benötige ich das Umbenennen bereits vorhandener Laufwerke mit exakt dem gleichen Code:

If System.IO.Directory.Exists("M:") Then
arrLWM = Split(My.Settings.MyLW_M, ";")
For Each i In arrLWM
arrSETTING = Split(i, ",")
If UCase(arrSETTING(0)) = UCase(System.Environment.UserName) Then
objAPP.namespace("M:").self.name = arrSETTING(1)
LOGit.WriteLine(" M: " & arrSETTING(1))
End If
Next
Else
LOGit.WriteLine(" L: Laufwerk nicht vorhanden!")
End If

Hier klappt alles reibungslos.

Für Hilfe und Ideen bin ich euch sehr dankbar!

MfG Dirk

PS: Ich denke ich gehe jetzt auch erst mal ins Bett...

Content-Key: 91380

Url: https://administrator.de/contentid/91380

Printed on: April 19, 2024 at 12:04 o'clock

Member: SamTrex
SamTrex Jul 06, 2008 at 18:42:38 (UTC)
Goto Top
Also,
zu 1)
Ich habe einen 2. Thread erstellt und führe das gesamte Hauptprogramm darin aus. Im Hauptthread läuft nur noch ein Timer der die Form aktualisiert.

zu 2)
Ich verstehe es ehrlich gesagt nicht:
Ich kürze 'letter' (z.B: "B:") auf "B" und speicher dies in letter2
in 'objAPP.namespace füge ich statt letter dann folgendes ein: 'letter2 & ":"'

Das ist doch exakt das gleiche wie das was ich vorher schon hatte!!! Oder nicht???
Über Aufklärung würde ich mich sehr freuen!

Danke

MfG Dirk


Function mapLW(ByVal letter As String, ByVal path As String, Optional ByVal name As String = "")
Dim arrPath As Array
Dim letter2 As String = Mid(letter, 1, 1)

status2 = "Verbinde Netzlaufwerk " & letter & " ..."
arrPath = Split(path, "\")
If name = "" Then name = UBound(arrPath)
If System.IO.Directory.Exists(path) = True Then
If System.IO.Directory.Exists(letter) = True Then
objNET.removenetworkdrive(letter)
End If
objNET.mapnetworkdrive(letter, path)
If System.IO.Directory.Exists(letter) = True Then
objAPP.namespace(letter2 & ":").self.name = name
mapLW = path & " mapped to " & letter & " as " & name
Else
mapLW = "Mapping faild!" & vbTab & path & " to " & letter & " as " & name
End If
Else
mapLW = "Server not found!"
End If
End Function