Hallo,
Ich habe ein Script zum Mappen von Netzwerkshares auf meinem NAS geschrieben. Als Erklärung vorneweg. Ich benötige nicht immer alle 6 Shares auf einmal, sondern nur mal eine oder zwei gleichzeitig. Daher mein Ansatz mit der GUI und den Check-Boxen und die Shares bei Bedarf zu verbinden. Bei meinem ersten Ansatz war unter den Check-Boxen ein Button der die Shares verbunden hat. Dann ist mir eingefallen, dass ich ja alle Kombinationen (Share 1 mit 2 und 4 oder 2 und 6 oder 1 und 6 usw. usw.) abfragen muss. Da kommen bei 6 Shares einige Kombination und Zeilen Quelltext zustande. Zur Zeit ist für jede Share ein Button zum verbinden vorhanden.
Spoiler anzeigen
#NoTrayIcon
#include <GUIConstants.au3>
$font="Tahoma"
GuiCreate ("Netzlaufwerke herstellen", 340, 225)
$lbl_besch = GUICtrlCreateLabel ("Bitte Netzlaufwerke auswählen", 64, 10, 212)
GUICtrlSetFont ($lbl_besch, 10, 600 ,4, $font)
$chk_DasiBilder = GUICtrlCreateCheckbox ("Datensicherung Bilder", 20, 47)
GUICtrlSetTip ( $chk_DasiBilder, "\\Storage\DasiBilder" )
$btn_bilder = GUICtrlCreateButton ("Verbindung herstellen (T:\)", 190, 45, 135, 21)
$chk_Update = GUICtrlCreateCheckbox ("Update (Sicherheitspatche)", 20, 72)
GUICtrlSetTip ($chk_Update, "\\Storage\Update" )
$btn_update = GUICtrlCreateButton ("Verbindung herstellen (U:\)", 190, 70, 135, 21)
$chk_DasiDaten = GUICtrlCreateCheckbox ("Datensicherung Daten", 20, 97)
GUICtrlSetTip ($chk_DasiDaten, "\\Storage\DasiDaten" )
$btn_daten = GUICtrlCreateButton ("Verbindung herstellen (W:\)", 190, 95, 135, 21)
$chk_DasiDownload = GUICtrlCreateCheckbox ("Datensicherung Download", 20, 122)
GUICtrlSetTip ($chk_DasiDownload, "\\Storage\DasiDownload" )
$btn_download = GUICtrlCreateButton ("Verbindung herstellen (X:\)", 190, 120, 135, 21)
$chk_DasiMusik = GUICtrlCreateCheckbox ("Datensicherung Musik", 20, 147 )
GUICtrlSetTip ($chk_DasiMusik, "\\Storage\DasiMusik" )
$btn_musik = GUICtrlCreateButton ("Verbindung herstellen (Y:\)", 190, 145, 135, 21)
$chk_DatTausch = GUICtrlCreateCheckbox ("Laufwerk für Datenaustausch", 20, 172)
GUICtrlSetTip ($chk_DatTausch, "\\Storage\Dat-Tausch" )
$btn_dta = GUICtrlCreateButton ("Verbindung herstellen (Z:\)", 190, 170, 135, 21)
GUISetState(@SW_SHOW)
while 1
$msg = GUIGetMsg()
Select
Case $msg = $btn_bilder
;Mapping fuer Bilder
$bilder = GUICtrlRead ($chk_DasiBilder)
$storage = Ping("storage",250)
If $storage Then
Select
case $bilder = $GUI_CHECKED
$LW_Bez = DriveMapGet ("t:")
Select
Case $LW_Bez = ""
DriveMapAdd ("t:", "\\storage\dasibilder")
If @error = 2 Then
MsgBox(16,"Fehler", "Zugriff verweigert")
ElseIF @error = 3 Then
MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
ElseIF @error = 4 Then
MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
ElseIF @error = 5 Then
MsgBox(16,"Fehler", "Ungültige Remote Share")
ElseIF @error = 6 Then
MsgBox(16,"Fehler", "Ungültiges Passwort")
EndIf
Case $LW_Bez ="\\Storage\dasibilder"
msgbox(64,"Fehler","Laufwerk für die Bilder war bereits verbunden")
EndSelect
case $bilder = $GUI_UNCHECKED
MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
EndSelect
Else
Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
GUICtrlSetState ($chk_DasiBilder, $GUI_UNCHECKED)
Return 0
EndIf
GUICtrlSetState ($chk_DasiBilder, $GUI_UNCHECKED)
Case $msg = $btn_update
;Mapping fuer Updates
$update = GUICtrlRead ($chk_Update)
$storage = Ping("storage",250)
If $storage Then
Select
case $update = $GUI_CHECKED
$LW_Bez = DriveMapGet ("u:")
Select
Case $LW_Bez = ""
DriveMapAdd ("u:", "\\storage\update")
If @error = 2 Then
MsgBox(16,"Fehler", "Zugriff verweigert")
ElseIF @error = 3 Then
MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
ElseIF @error = 4 Then
MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
ElseIF @error = 5 Then
MsgBox(16,"Fehler", "Ungültige Remote Share")
ElseIF @error = 6 Then
MsgBox(16,"Fehler", "Ungültiges Passwort")
EndIf
Case $LW_Bez ="\\Storage\update"
msgbox(64,"Fehler","Laufwerk für das Update war bereits verbunden")
EndSelect
case $update = $GUI_UNCHECKED
MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
EndSelect
Else
Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
GUICtrlSetState ($chk_Update, $GUI_UNCHECKED)
Return 0
EndIf
GUICtrlSetState ($chk_Update, $GUI_UNCHECKED)
Case $msg = $btn_Daten
;Mapping fuer Daten
$daten = GUICtrlRead ($chk_DasiDaten)
$storage = Ping("storage",250)
If $storage Then
Select
case $daten = $GUI_CHECKED
$LW_Bez = DriveMapGet ("w:")
Select
Case $LW_Bez = ""
DriveMapAdd ("W:", "\\storage\dasidaten")
If @error = 2 Then
MsgBox(16,"Fehler", "Zugriff verweigert")
ElseIF @error = 3 Then
MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
ElseIF @error = 4 Then
MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
ElseIF @error = 5 Then
MsgBox(16,"Fehler", "Ungültige Remote Share")
ElseIF @error = 6 Then
MsgBox(16,"Fehler", "Ungültiges Passwort")
EndIf
Case $LW_Bez ="\\Storage\dasidaten"
msgbox(64,"Fehler","Laufwerk für die Daten war bereits verbunden")
EndSelect
case $daten = $GUI_UNCHECKED
MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
EndSelect
Else
Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
GUICtrlSetState ($chk_DasiDaten, $GUI_UNCHECKED)
Return 0
EndIf
GUICtrlSetState ($chk_DasiDaten, $GUI_UNCHECKED)
Case $msg = $btn_Download
;Mapping fuer Download
$download = GUICtrlRead ($chk_DasiDownload)
$storage = Ping("storage",250)
If $storage Then
Select
case $download = $GUI_CHECKED
$LW_Bez = DriveMapGet ("x:")
Select
Case $LW_Bez = ""
DriveMapAdd ("x:", "\\storage\dasidownload")
If @error = 2 Then
MsgBox(16,"Fehler", "Zugriff verweigert")
ElseIF @error = 3 Then
MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
ElseIF @error = 4 Then
MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
ElseIF @error = 5 Then
MsgBox(16,"Fehler", "Ungültige Remote Share")
ElseIF @error = 6 Then
MsgBox(16,"Fehler", "Ungültiges Passwort")
EndIf
Case $LW_Bez ="\\Storage\dasidownload"
msgbox(64,"Fehler","Laufwerk für die Downloads war bereits verbunden")
EndSelect
case $download = $GUI_UNCHECKED
MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
EndSelect
Else
Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
GUICtrlSetState ($chk_DasiDownload, $GUI_UNCHECKED)
Return 0
EndIf
GUICtrlSetState ($chk_DasiDownload, $GUI_UNCHECKED)
Case $msg = $btn_Musik
;Mapping fuer Musik
$musik = GUICtrlRead ($chk_DasiMusik)
$storage = Ping("storage",250)
If $storage Then
Select
case $musik = $GUI_CHECKED
$LW_Bez = DriveMapGet ("y:")
Select
Case $LW_Bez = ""
DriveMapAdd ("y:", "\\storage\dasimusik")
If @error = 2 Then
MsgBox(16,"Fehler", "Zugriff verweigert")
ElseIF @error = 3 Then
MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
ElseIF @error = 4 Then
MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
ElseIF @error = 5 Then
MsgBox(16,"Fehler", "Ungültige Remote Share")
ElseIF @error = 6 Then
MsgBox(16,"Fehler", "Ungültiges Passwort")
EndIf
Case $LW_Bez ="\\Storage\dasimusik"
msgbox(64,"Fehler","Laufwerk für die Musik war bereits verbunden")
EndSelect
case $musik = $GUI_UNCHECKED
MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
EndSelect
Else
Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
GUICtrlSetState ($chk_DasiMusik, $GUI_UNCHECKED)
Return 0
EndIf
GUICtrlSetState ($chk_DasiMusik, $GUI_UNCHECKED)
Case $msg = $btn_dta
;Mapping fuer Datentausch
$dattausch = GUICtrlRead ($chk_DatTausch)
$storage = Ping("storage",250)
If $storage Then
select
Case $dattausch = $GUI_CHECKED
$LW_Bez = DriveMapGet ("z:")
Select
Case $LW_Bez = ""
DriveMapAdd ("z:", "\\storage\dat-tausch")
If @error = 2 Then
MsgBox(16,"Fehler", "Zugriff verweigert")
ElseIF @error = 3 Then
MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
ElseIF @error = 4 Then
MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
ElseIF @error = 5 Then
MsgBox(16,"Fehler", "Ungültige Remote Share")
ElseIF @error = 6 Then
MsgBox(16,"Fehler", "Ungültiges Passwort")
EndIf
Case $LW_Bez ="\\Storage\dat-tausch"
msgbox(64,"Fehler","Laufwerk für den Datentasuch war bereits verbunden")
EndSelect
Case $dattausch = $GUI_UNCHECKED
MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
EndSelect
Else
Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
GUICtrlSetState ($chk_DatTausch, $GUI_UNCHECKED)
Return 0
EndIf
GUICtrlSetState ($chk_DatTausch, $GUI_UNCHECKED)
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
[/autoit]Das ganze gefällt mir noch nicht so Richtig. Daher meine Frage, wie kann man das noch optimieren?
Dabei ist mir aufgefallen, dass
[autoit]DriveMapAdd ("t:", "\\storage\dasibilder")
MsgBox (0,"", @error)
bei erfolgreicher Durchführung den Rückgabewert 0 hat und nicht wie in der deutschen und englischen Hilfe beschrienen die 1.
Gruß
Stefan