Hallo Community,
ich bastele seit einiger Zeit diverse Scripte mit AutoIt und habe zu den meisten Problemen auch immer Hilfe gefunden ohne einen Beitrag erstellen zu müssen, doch nun stehe ich vor einem Problem bei dem ich so nicht weiter komme.
Ich habe hier ein Script mit GUI, welches ein in ein Laufwerk eingelegtes Medium an einen Ort auf der Festplatte kopiert.
Das Script funktioniert soweit.
Nun wollte ich jedoch noch die Möglichkeit einbauen, den Inhalt des Mediums gleich auf ein Netzlaufwerk/einen Server zu kopieren.
Dazu will ich einen Radiobutton oder ähnliches auf aktiv setzen wenn der Server erreichbar ist.
Die überprüfung würde ich mit Ping machen und das ganze eben jede Sekunde ausführen.
Jedoch weiß ich nicht wie ich das bewältigen soll. Mit meiner Funktion checkdrive, welche Überprüft ob ein Medium eingelegt ist etc. funktioniert das ganze.
Mache ich jedoch ein weiteres AdLibEnable und rufe die Ping Funktion auf, macht er danach nicht mehr weiter.
Was macht AdLibEnable überhaupt? Ich weiß zwar das man damit eine Funktion periodisch aufrufen kann aber mehr auch nicht.
Anbei noch der Quelltext.
Vielen Dank für Vorschläge.
Gruß Johannes
Spoiler anzeigen
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
$main_gui=GuiCreate("CopyGUI",350,210)
$copybutton=GUICtrlCreateButton("Kopieren",290,180)
GuiCtrlCreateLabel("Filmname",15,90)
$moviename=GUICtrlCreateInput("",15,105,220,20,$ES_LOWERCASE)
GuiCtrlCreateLabel("Staffel",254,90)
$moviesession=GUICtrlCreateInput("",254,105,31,20,$ES_NUMBER)
GuiCtrlCreateLabel("Disc",304,90)
$moviesessiondisc=GUICtrlCreateInput("",304,105,31,20,$ES_NUMBER)
GuiCtrlCreateGroup("Disc-Info",15,15,320,65)
GuiCtrlCreateLabel("Disc-Name:",30,35)
GuiCtrlCreateLabel("Disc-Größe:",30,55)
$discname=GuiCtrlCreateLabel("",90,35,240,15)
$discsize=GuiCtrlCreateLabel("",90,55,240,15)
$drive="E:\"
$server="192.168.40.225"
$progress=GUICtrlCreateProgress(15,145,320,20)
GUICtrlSetColor(-1, 32250)
$source="E:\"
$dest="D:\ziel\"
GUICtrlSetLimit($moviesession,2)
GuiCtrlSetLimit($moviesessiondisc,2)
AdLibEnable("checkdrive")
GUISetState(@SW_SHOW,$main_gui)
while True
$msg = GUIGetMsg()
Switch $msg
case $gui_event_close
Exit
case $copybutton
$text1=GUICtrlRead($moviename)
$text2=GUICtrlRead($moviesession)
$text3=GuiCtrlRead($moviesessiondisc)
If $text1="" Then
msgbox(0,"Fehler","Die Eingabe des Titels ist erforderlich")
Else
start()
EndIf
EndSwitch
WEnd
func checkdrive()
$drivestatus=DriveStatus($drive)
$discfree=DriveSpaceFree($drive)
$disctotal=DriveSpaceTotal($drive)
$discused=$disctotal - $discfree
If $discused < 1000 Then
$discused=StringLeft($discused,3) & " MB"
Else
$discused=StringLeft($discused/1000,3) & " GB"
EndIf
If $driveStatus="READY" Then
GuiCtrlSetData($discname,DriveGetLabel($drive))
GuiCtrlSetData($discsize,$discused)
GuiCtrlSetState($moviename,$GUI_ENABLE)
GuiCtrlSetState($moviesession,$GUI_ENABLE)
GuiCtrlSetState($moviesessiondisc,$GUI_ENABLE)
GuiCtrlSetState($copybutton,$GUI_ENABLE)
Else
GuiCtrlSetState($moviename,$GUI_DISABLE)
GuiCtrlSetState($moviesession,$GUI_DISABLE)
GuiCtrlSetState($moviesessiondisc,$GUI_DISABLE)
GuiCtrlSetState($copybutton,$GUI_DISABLE)
GuiCtrlSetData($discname,"Kein Medium eingelegt")
GuiCtrlSetData($discsize,"")
EndIf
EndFunc
func start()
If StringLen($text2) = 1 Then
$text2 = "0"&$text2
EndIf
If StringLen($text3) = 1 Then
$text3 = "0"&$text3
EndIf
If $text2<>"" Then $text2="_S"&$text2
If $text3<>"" Then $text3="D"&$text3
$replaced1=StringReplace($text1," ","_")
$copydir=$dest&$replaced1&$text2&$text3
If FileExists($copydir) Then
msgbox(0,"","Film bereits vorhanden.")
Else
$data=msgbox(4,"Daten bestätigen","Sind die eingegeben Daten richtig?"&@CRLF&$replaced1&$text2&$text3)
If $data="6" Then
DirCreate($copydir)
$xcopy="xcopy "&$source&"*.* "&$copydir&" /s /e /i"
TrayTip("Kopieren gestartet","Datenträger wird nach " & $copydir & " kopiert",10)
Run(@ComSpec & " /c " & $xcopy, "", @SW_Show)
$source_files=DirGetSize($source,1)
$dest_files=DirGetSize($copydir,1)
while $source_files[1]>$dest_files[1]
while True
$msg = GUIGetMsg()
Switch $msg
case $gui_event_close
;~ ProcessClose("C:\windows\system32\cmd.exe")
Exit
EndSwitch
GuiCtrlSetData($progress, Round($dest_files[1]/$source_files[1]*100))
$dest_files=DirGetSize($copydir,1)
WEnd
WEnd
EndIf
EndIf
EndFunc