Jetzt hab ich aber Bockmist gebaut
Hey all.
Ich hab mir einen Desktop-Cleaner gebaut, weil ich mir regelmäßig den Desktop zumülle. ich ziehe 1 oder mehrere Dateien in ein Feld und diese werden dann in einen, aus einer Combobox zuvor gewählten, Ordner verschoben.
Mit den Dateien klappt das alles, deshalb hab ich innerlich gejubelt weil ich was funktionierendes gebaut habe, ohne das ich jemanden dafür um Hilfe gebeten hab....
Aber dann!!!
Ich machte mich ans Werk und hab den Desktop aufgeräumt. Dabei waren auch Ordner mit Inhalt darunter.
Und da ist es passiert. Aus den Ordnern sind Dateien ohne Endung geworden. Teilweise bis zu 4,5 GB groß. WTF!!!
Jetzt brauch ich doch eure Hilfe.
1. Wie kann ich die Ordner wiederherstellen?
2. Werft doch bitte mal einen Blick auf mein Script und sagt mir wie ich den Fehler beheben kann.
Spoiler anzeigen
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=O:\Software.System\___selbsterstellte___\___au3-files___\für den Serverjoiner\ProgrammIcon_1.ico
#AutoIt3Wrapper_Res_Description=Desktop aufräumen einfach per Drag&Drop
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "WindowsConstants.au3"
#include "GUIConstantsEx.au3"
#include "ButtonConstants.au3" ; Brauch ich um Buttons mit Icons zu versehen
#include "_msgbox.au3" ; eigene Funktion um Variablen auszulesen
#include <Array.au3>
If WinExists("superior Desktop Cleaner") Then Exit
AutoItWinSetTitle("superior Desktop Cleaner")
Global $name = "My Desk-Cleaner", $gaDropFiles[1], $ordner[20], $Ordner_Pfad[20], $button[20], $open_selected_folder, $zielpfad, $iDropItem = -1, $combo, $dropper, $h_GUI, $h_Child
[/autoit] [autoit][/autoit] [autoit]$ordner[1]= "RAR-Files"
$ordner[2]= "Text-Files"
$ordner[3]= "Programme"
$ordner[4]= "Wichtiges"
$ordner[5]= "Funny Stuff"
$ordner[6]= "Bilder"
$ordner[7]= "Audio"
$ordner[8]= "Scripte"
$ordner[9]= "Sonstiges"
$Ordner_Pfad[1] = @MyDocumentsDir & "\" & $name & "\" & $ordner[1]
$Ordner_Pfad[2] = @MyDocumentsDir & "\" & $name & "\" & $ordner[2]
$Ordner_Pfad[3] = @MyDocumentsDir & "\" & $name & "\" & $ordner[3]
$Ordner_Pfad[4] = @MyDocumentsDir & "\" & $name & "\" & $ordner[4]
$Ordner_Pfad[5] = @MyDocumentsDir & "\" & $name & "\" & $ordner[5]
$Ordner_Pfad[6] = @MyDocumentsDir & "\" & $name & "\" & $ordner[6]
$Ordner_Pfad[7] = @MyDocumentsDir & "\" & $name & "\" & $ordner[7]
$Ordner_Pfad[8] = @MyDocumentsDir & "\" & $name & "\" & $ordner[8]
$Ordner_Pfad[9] = @MyDocumentsDir & "\" & $name & "\" & $ordner[9]
For $x = 1 To 9
DirGetSize($Ordner_Pfad[$x])
If @error Then DirCreate($Ordner_Pfad[$x])
Next
Func open_selected_folder($extended_Mode = 0)
If $extended_Mode = 1 Then
If GUICtrlRead($combo,1) = $ordner[1] Then ShellExecute($Ordner_Pfad[1])
If GUICtrlRead($combo,1) = $ordner[2] Then ShellExecute($Ordner_Pfad[2])
If GUICtrlRead($combo,1) = $ordner[3] Then ShellExecute($Ordner_Pfad[3])
If GUICtrlRead($combo,1) = $ordner[4] Then ShellExecute($Ordner_Pfad[4])
If GUICtrlRead($combo,1) = $ordner[5] Then ShellExecute($Ordner_Pfad[5])
If GUICtrlRead($combo,1) = $ordner[6] Then ShellExecute($Ordner_Pfad[6])
If GUICtrlRead($combo,1) = $ordner[7] Then ShellExecute($Ordner_Pfad[7])
If GUICtrlRead($combo,1) = $ordner[8] Then ShellExecute($Ordner_Pfad[8])
If GUICtrlRead($combo,1) = $ordner[9] Then ShellExecute($Ordner_Pfad[9])
Else
If GUICtrlRead($combo,1) = $ordner[1] Then $zielpfad = $Ordner_Pfad[1]
If GUICtrlRead($combo,1) = $ordner[2] Then $zielpfad = $Ordner_Pfad[2]
If GUICtrlRead($combo,1) = $ordner[3] Then $zielpfad = $Ordner_Pfad[3]
If GUICtrlRead($combo,1) = $ordner[4] Then $zielpfad = $Ordner_Pfad[4]
If GUICtrlRead($combo,1) = $ordner[5] Then $zielpfad = $Ordner_Pfad[5]
If GUICtrlRead($combo,1) = $ordner[6] Then $zielpfad = $Ordner_Pfad[6]
If GUICtrlRead($combo,1) = $ordner[7] Then $zielpfad = $Ordner_Pfad[7]
If GUICtrlRead($combo,1) = $ordner[8] Then $zielpfad = $Ordner_Pfad[8]
If GUICtrlRead($combo,1) = $ordner[9] Then $zielpfad = $Ordner_Pfad[9]
EndIf
EndFunc
Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam) ; Diese Funktion ist leider geklaut O.o
Local $nSize, $pFileName
Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
For $i = 0 To $nAmt[0] - 1
$nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
$nSize = $nSize[0] + 1
$pFileName = DllStructCreate('wchar[' & $nSize & ']')
DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
ReDim $gaDropFiles[$i + 1]
$gaDropFiles[$i] = DllStructGetData($pFileName, 1)
$pFileName = 0
Next
EndFunc
Func drag_n_drop($kopiere_das_Zeug)
open_selected_folder()
$count = StringSplit($kopiere_das_Zeug,"|")
For $y = 1 To $count[0]
$name_file = StringMid($count[$y],StringInStr($count[$y], '\', 1, -1)+1)
FileMove($count[$y], $zielpfad & "\" & $name_file)
Next
GUICtrlSetData($dropper,"")
EndFunc
Func GUI_1()
Global $h_GUI = GUICreate($name, 150, 150, 0, 0, $WS_Popupwindow, BitOR($WS_EX_ACCEPTFILES, $WS_EX_OVERLAPPEDWINDOW, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUISetBkColor(0x000000)
Global $combo = GUICtrlCreateCombo("",2,2,80,20)
Global $dropper = GUICtrlCreateInput("",5,30,140,115)
$button[1] = GUICtrlCreateButton("",85,0,30,30,$BS_ICON)
$button[2] = GUICtrlCreateButton("",118,1,26,26,$BS_ICON)
GUICtrlSetImage($button[1], "imageres.dll", -177)
GUICtrlSetImage($button[2], "imageres.dll", -217)
GUICtrlSetState($dropper, $GUI_DROPACCEPTED)
GUICtrlSetData ($combo, $ordner[1] &"|"& $ordner[2] &"|"& $ordner[3] &"|"& $ordner[4] &"|"& $ordner[5] &"|"& $ordner[6] &"|"& $ordner[7] &"|"& $ordner[8] &"|"& $ordner[9], $ordner[9])
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
GUISetState(@SW_SHOW,$h_GUI)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_DROPPED Then drag_n_drop(GUICtrlRead($dropper))
If $msg = $button[1] Then open_selected_folder(1)
If $msg = $button[2] Then
GUISetState(@SW_HIDE,$h_GUI)
GUI_2()
ExitLoop
EndIf
WEnd
EndFunc
Func GUI_2($size = 33)
GUISetState(@SW_HIDE,$h_GUI)
Global $h_Child = GUICreate("", $size, $size, 0, 0, $WS_Popupwindow, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
$button[3] = GUICtrlCreateButton("",0,0,$size,$size,$BS_ICON)
GUICtrlSetImage($button[3], "comres.dll",-5)
GUISetState(@SW_SHOW,$h_Child)
While 1
$msg = GUIGetMsg()
If $msg = $button[3] Then
GUISetState(@SW_HIDE,$h_Child)
GUI_1()
ExitLoop
EndIf
WEnd
EndFunc
GUI_2()
Ich bedanke mich jetzt schonmal im Voraus, denn ich bin mir sicher, dass ich von euch Hilfe bekomme.
MfG, der "Rettich"