Ist dieses Programm hilfreich? 9
-
Ja! Endlich etwas mehr Ordnung im System. (0) 0%
-
Nein! Ich brauch sowas nicht. (3) 33%
-
Gute Idee, doch ich hab mein eigenes System dafür. (6) 67%
Hey all,
sicher kennt der eine oder andere das Problem, dass sich schnell der Desktop mit vieeelen Dateien "zumüllt".
Mir geht es häufig so, weshalb ich mich dazu entschieden hab, ein kleines, aber zumindest für mich sehr nützliches, Programm geschrieben, dass ich gern mit euch teilen möchte.
Was macht das Programm?
Es wird im @UserProfileDir ein neuer Ordner angelegt mit dem Namen des Programms.
Dieser neue Ordner dient als Basis, indem neue Ordner erstellt werden, ganz wie der Wunsch des Users ist.
Will man seinen Desktop aufräumen, kann man so auch gleich eine vernünftige Ordnung in die ganze Geschichte reinbringen (zB alle .rar-Dateien in einen Ordner "RAR Files").
Anmerkung: Das Programm KOPIERT sich automatisch in das Basisverzeichnis. Die neue Datei wird für die Verknüpfungen auf den Desktop und nach @StartupDir genutzt.
Anwendung mit Screenshots
Per Buttonklick kann ein neuer Ordner angelegt werden. Bei Erstausführung wird automatisch die Funktion dafür aufgerufen, denn es muss mind. 1 Ordner in der Basis existieren.
In der Combobox kann man die vorhandenen Ordner in der Basis auswählen. Mit Klick auf den 2. Button wird der in der Combobox gewählte Ordner geöffnet.
_____ MAINGUI _________ MINIGUI _______ Auswahl Combo
[Blockierte Grafik: http://www.ifa-clan.de/files/Forumbilder/autoit/maingui.PNG] _____ [Blockierte Grafik: http://www.ifa-clan.de/files/Forumbilder/autoit/minigui.PNG] _____ [Blockierte Grafik: http://www.ifa-clan.de/files/Forumbilder/autoit/combo.PNG]
Bei Klick auf den Button "Hide"Wechselt die GUI zu einer winzigen GUI , die in der linken oberen Ecke des Desktops angezeigt wird. Klickt man auf diese GUI, wird die HauptGUI wieder angezeigt.
Dies dient dazu, dass KEIN Icon in der Taskleiste angezeigt wird.
Der eigentliche Sinn des programms ist jedoch das weisse Feld in der Mitte, die Drag´n´Drop-Zone
Man wählt in der Combobox einen zuvor erstellten Ordner und zieht dann eine oder mehrere Dateien und/oder Ordner ind diese Drag´n´Drop-Zone und die Dateien/Ordner werden in den gewünschten
Ordner verschoben.
Das Programm kann entweder per Tray-Icon beendet werden oder mit ESC wenn die HauptGUI aktiv ist.
Fazit
Ruckizucki ist der Desktop wieder frei, die verschobenen Ordner/Dateien sind ordentlich verstaut und jederzeit per Buttonklick aufrufbar.
Das Programm baut KEINE Internetverbindung auf, liest KEINE Daten aus, enthält KEINE Werbung/Malware/Viren oder sonstigen Hackermist!
Über euer Feedback würde ich mich freuen. Die fertige EXE findet ihr im Anhang.
SourceCode DesktopCleaner v1.0
#include "WindowsConstants.au3"
#include "GUIConstantsEx.au3"
#include "ButtonConstants.au3"
#Include "File.au3"
$Name_der_Instanz = "Superior Desktop Cleaner"
If WinExists($Name_der_Instanz) Then
MsgBox(0,"Instanzcheck aktiv","Es wird bereits eine Instanz des soeben gestarteten Programms ausgeführt."&@CRLF&@CRLF&"Die erneute Ausführung zur Laufzeit ist nicht zulässig.")
Exit
EndIf
AutoItWinSetTitle($Name_der_Instanz);....;==> sorgt dafür, dass KEINE Mehrfachstarts des Programms möglich sind. Ähnlich wie _singleton()
Global $name = "Mausers Desk-Cleaner", $iDropItem = -1, $gaDropFiles[1], $button[5], $open_selected_folder, $zielpfad, $combo, $dropper, $h_GUI, $h_Child
Global $basis = @UserProfileDir & "\" & $name & "\"
Func check();...;==> Für Autostart mit Windows und Verknüpfung zum Desktop. Die eigentliche .EXE wird in der $basis hinterlegt und für die Verknüpfungen genutzt.
If Not FileExists($basis & @ScriptName) Then FileCopy(@ScriptFullPath,$basis & @ScriptName)
If Not FileExists(@StartupDir & "\" & $name & ".lnk") Then FileCreateShortcut($basis & @ScriptName,@StartupDir & "\" & $name & ".lnk")
If Not FileExists(@DesktopDir & "\" & $name & ".lnk") Then FileCreateShortcut($basis & @ScriptName,@DesktopDir & "\" & $name & ".lnk")
EndFunc
check()
Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam);...;==> diese Funktion hab ich leider geklaut :-/
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);==> wie der Name schon sagt...
$zielpfad = $basis & GUICtrlRead($combo);.......................................;==> ermittelt den Zielpfad
$count = StringSplit($kopiere_das_Zeug,"|");....................................;==> ermittelt die Anzahl der zu verschiebenden Ordner/Dateien
For $y = 1 To $count[0]
$name_file = StringMid($count[$y],StringInStr($count[$y], '\', 1, -1)+1);...;==> ermittelt den Dateinamen
$attribute = FileGetAttrib($count[$y]);.....................................;==> ermittelt ob Datei oder Ordner
If $attribute == "D" Then
DirMove($count[$y], $zielpfad & "\" & $name_file);......................;==> verschiebt Ordner zum Ziel
Else
FileMove($count[$y], $zielpfad & "\" & $name_file);.....................;==> verschiebt Dateien zum Ziel
EndIf
Next
GUICtrlSetData($dropper,"");....................................................;==> setzt die Drag´n´Drop-Area zurück
EndFunc
Func aktualisierung();==> aktualisiert den Inhalt der Combobox (Ordnerliste)
Local $inhalt = _FileListToArray($basis, "*", 2), $inhalt_combo
If Not @error Then
For $i = 1 To $inhalt[0]
$inhalt_combo &= $inhalt[$i] & "|"
Next
Return $inhalt_combo
Else
new_folder()
$inhalt = _FileListToArray($basis, "*", 2)
For $i = 1 To $inhalt[0]
$inhalt_combo &= $inhalt[$i] & "|"
Next
Return $inhalt_combo
EndIf
EndFunc
Func new_folder();...;==> erstellt einen neuen Ordner
Local $new_folder = InputBox("","Neuen Ordner erstellen?"&@CRLF&@CRLF&"Wenn ein neuer Ordner erstellt werden soll,"&@CRLF&"dann gib im Eingabefeld einen Namen ein.",">> hier <<")
If Not FileExists($basis & $new_folder) Then DirCreate($basis & $new_folder)
EndFunc
Func GUI_1();........;==> HauptGUI, kann mit ESC beendet werden
$h_GUI = GUICreate($name, 152, 145, 100, 100, $WS_Popupwindow, BitOR($WS_EX_ACCEPTFILES, $WS_EX_OVERLAPPEDWINDOW, $WS_EX_TOOLWINDOW))
GUISetBkColor(0x000000)
$combo = GUICtrlCreateCombo("",35, 4, 80,20)
$dropper = GUICtrlCreateInput("", 0,30,150,80)
$button[1] = GUICtrlCreateButton("", 0, 0, 30, 30, $BS_ICON) ; neuer Ordner
$button[2] = GUICtrlCreateButton("", 120, 0, 30, 30, $BS_ICON) ; Ordner öffnen
$button[3] = GUICtrlCreateButton("Hide", 0, 112, 150, 30, $BS_ICON) ; GUI wechseln
GUICtrlSetImage($button[1], "imageres.dll", -176)
GUICtrlSetImage($button[2], "imageres.dll", -177)
GUICtrlSetState($dropper, $GUI_DROPACCEPTED)
GUICtrlSetData ($combo, aktualisierung())
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
GUISetState(@SW_SHOW,$h_GUI)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
If $msg = $GUI_EVENT_DROPPED Then drag_n_drop(GUICtrlRead($dropper))
If $msg = $button[3] Then ExitLoop
If $msg = $button[2] Then ShellExecute($basis & GUICtrlRead($combo))
If $msg = $button[1] Then
new_folder()
GUICtrlSetData($combo, "")
GUICtrlSetData($combo, aktualisierung())
EndIf
WEnd
GUIDelete($h_GUI)
GUI_2()
EndFunc
Func GUI_2();........;==> NebenGUI, klein und somit kaum störend
$h_Child = GUICreate("", 30, 30, 0, 0, $WS_Popupwindow, $WS_EX_TOOLWINDOW)
$button[4] = GUICtrlCreateButton("",0,0,30,30,$BS_ICON)
GUICtrlSetImage($button[4], "imageres.dll", -217)
GUISetState(@SW_SHOW,$h_Child)
While 1
If GUIGetMsg() = $button[4] Then ExitLoop
WEnd
GUIDelete($h_Child)
GUI_1()
EndFunc
GUI_2();.............;==> startet die NebenGUI
[/autoit]MfG Lottich