• Ich wollte mal mein Programm zum suchen von Dateien vorstellen, weil beim Wettbewerb gesagt wurde, der geht nicht, aber bei allen Personen die es für mich bis jetzt getestet haben klappt es (verschieben+schließen).

    Nebenbei ist es natürlich auch so ein Programm, das man vorstellen kann


    Code:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=search_icon2.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <GuiListView.au3>
    #include <Misc.au3>
    #include <Aero.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $add=1

    [/autoit] [autoit][/autoit] [autoit]

    $gui=_AeroCreate("Desktopsearch", 596, 436 ,"search_icon.png") ; - TheShadowAE

    [/autoit] [autoit][/autoit] [autoit]

    $stnum=IniRead("Settings.ini","Options","Style",1)
    _DrawStyle()

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    $Form1 = _AeroWorkAreaCreate($gui,4,0,588,436,@SW_HIDE)
    GUISetBkColor(0xAAAAAA)
    $Radio1 = GUICtrlCreateCheckbox("Unterordner durchsuchen", 8, 8, 321, 17)
    $Label2 = GUICtrlCreateLabel("", 8, 32, 321, 17)
    GUICtrlSetTip(-1,"weiterer Pfad")
    $Input1 = GUICtrlCreateInput("", 8, 96, 121, 21)
    GUICtrlSetTip(-1,"Suchbegriff")
    $Input2 = GUICtrlCreateInput("", 152, 96, 81, 21)
    GUICtrlSetTip(-1,"Endung")
    $Button1 = GUICtrlCreateButton("Suchen", 8, 128, 185, 25, $WS_GROUP)
    $Stylechanger1 = GUICtrlCreateButton("<Style 1>", 8, 64, 121, 17)
    $ListView1 = GUICtrlCreateListView("Name|Pfad", 8, 168, 569, 257)
    _GUICtrlListView_SetColumnWidth($ListView1,0,200)
    _GUICtrlListView_SetColumnWidth($ListView1,1,365)
    $cm=GUICtrlCreateContextMenu($ListView1)
    $cm1=GUICtrlCreateMenuItem("Öffnen",$cm)
    $cm2=GUICtrlCreateMenuItem("Bearbeiten",$cm)
    $cm3=GUICtrlCreateMenuItem("Ordner öffnen",$cm)
    GUICtrlCreateMenuItem("",$cm)
    $cm4=GUICtrlCreateMenuItem("Datei Löschen",$cm)
    $Input3 = GUICtrlCreateInput("CD", 256, 96, 73, 21)
    GUICtrlSetTip(-1,"Laufwerkbuchstaben")
    $Button2 = GUICtrlCreateButton("Index erstellen", 208, 128, 121, 25, $WS_GROUP)
    $MonthCal1 = GUICtrlCreateMonthCal("", 408, 5, 169, 157)
    $Label1 = GUICtrlCreateLabel(_NowTime(), 346, 8, 58, 17)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $mtp="",$make=0

    [/autoit] [autoit][/autoit] [autoit]

    $ids=3
    Dim $ipid[$ids]
    $indexon=0

    [/autoit] [autoit][/autoit] [autoit]

    _Load()

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_time",200)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _Exit()
    Case $Label2
    ToolTip("Abbrechen für keinen weiteren Pfad")
    $mtp=FileSelectFolder("Ordner auswählen",GUICtrlRead($Label2))&"\"
    ToolTip("")
    $mtp=StringTrimLeft($mtp,3)
    GUICtrlSetData($Label2,$mtp)
    Case $Button2
    _GUICtrlListView_DeleteAllItems($ListView1)
    GUICtrlCreateListViewItem("Index wird erstellt...|",$ListView1)
    GUICtrlCreateListViewItem("Index in process...|",$ListView1)
    _Make()
    $make=1
    Case $Button1
    If $indexon=1 Then ContinueLoop
    _SearchonIndex()
    Case $ListView1
    $false=False
    _GUICtrlListView_SimpleSort($ListView1,$false,GUICtrlGetState($ListView1))
    Case $cm1
    $xx=_GUICtrlListView_GetSelectedIndices($ListView1,True)
    $item=$xx[1]
    $path=_GUICtrlListView_GetItemText($ListView1,$item,1)
    $dat=_GUICtrlListView_GetItemText($ListView1,$item,0)
    ShellExecute($path&"\"&$dat,"",$path)
    Case $cm2
    $xx=_GUICtrlListView_GetSelectedIndices($ListView1,True)
    $item=$xx[1]
    $path=_GUICtrlListView_GetItemText($ListView1,$item,1)
    $dat=_GUICtrlListView_GetItemText($ListView1,$item,0)
    ShellExecute("notepad.exe",$path&"\"&$dat)
    Case $cm3
    $xx=_GUICtrlListView_GetSelectedIndices($ListView1,True)
    $item=$xx[1]
    $path=_GUICtrlListView_GetItemText($ListView1,$item,1)
    $dat=_GUICtrlListView_GetItemText($ListView1,$item,0)
    ShellExecute($path)
    Case $cm4
    $xx=_GUICtrlListView_GetSelectedIndices($ListView1,True)
    $item=$xx[1]
    $path=_GUICtrlListView_GetItemText($ListView1,$item,1)
    $dat=_GUICtrlListView_GetItemText($ListView1,$item,0)
    FileRecycle($path&"\"&$dat)
    ToolTip("(Index erstellen=aktualisieren)")
    AdlibRegister("_Closeit",2000)
    Case $Stylechanger1
    If $stnum=1 Then
    $stnum=2
    Else
    $stnum=1
    EndIf
    GUICtrlSetData($Stylechanger1,"<Style "&$stnum&">")
    _DrawStyle()
    EndSwitch
    $indexon=0
    For $x=0 To $ids-1
    If ProcessExists($ipid[$x]) Then $indexon=1
    Next
    If $indexon=0 And $make=1 Then
    $make=0
    _GUICtrlListView_DeleteAllItems($ListView1)
    EndIf
    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Closeit()
    AdlibUnRegister("_Closeit")
    ToolTip("")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _DrawStyle()
    ;Style 1
    If $stnum=1 Then
    $img=_GDIPlus_ImageLoadFromFile("bg.png")
    _AeroBgImage($gui,$img)
    _GDIPlus_ImageDispose($img)
    EndIf
    ;#######

    [/autoit] [autoit][/autoit] [autoit]

    ;Style 2
    If $stnum=2 Then
    $size=_AeroGetSize($gui)
    $style=_AeroStyleCreate(0,0,0,25,0x77AAAAAA,0xEE555555,1)
    $style2=_AeroStyleCreate($size[0],300,$size[1],0xDD777777,0xDD777777,0xDDCCCCFF,4)
    $style2[0]=2
    _AeroStyleDraw($gui,$style)
    _AeroStyleDraw($gui,$style2)
    EndIf
    ;#######
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _SearchonIndex()
    Local $unterordner=_Iif(BitAND(GUICtrlRead($Radio1),$GUI_CHECKED)<>0,1,0)
    Local $i[3]
    $i[0]=GUICtrlRead($Input1)
    $i[1]=GUICtrlRead($Input2)
    $i[2]=GUICtrlRead($Input3)
    If $i[0]="" Then
    $i[0]="*"
    Else
    $i[0]="*"&$i[0]&"*"
    EndIf
    If $i[1]="" Then
    $i[1]="*"
    EndIf
    Local $suche=$mtp&$i[0]&"."&$i[1]
    Local $len=StringLen($i[2])
    Local $files[$len]
    _GUICtrlListView_DeleteAllItems($ListView1)
    GUICtrlCreateListViewItem("Bitte warte bis die Suche beendet ist...|",$ListView1)
    GUICtrlCreateListViewItem("Please wait till the search ended...|",$ListView1)
    For $x=0 To $len-1
    $lw=StringMid($i[2],$x+1,1)
    $files[$x]=_GetIndexFile($lw,$suche,$unterordner)
    If Not FileExists($files[$x]) Then
    _MakeParameterized($i[0],$i[1],$lw,$unterordner)
    While 1
    If GUIGetMsg()=-3 Then _Exit()
    If Not ProcessExists($ipid[0]) Then ExitLoop
    Sleep(10)
    WEnd
    EndIf
    Next
    _GUICtrlListView_DeleteAllItems($ListView1)
    AdlibUnRegister("__AeroProc")
    AdlibRegister("__AeroProc",100)
    $path=""
    For $x=1 To $len
    $file=FileOpen($files[$x-1],0)
    While 1
    If GUIGetMsg()=-3 Then _Exit()
    $txt=FileReadLine($file)
    If @error Then ExitLoop
    If StringRegExp($txt,"Verzeichnis von (.+)",0) Then $path=StringRegExp($txt,"Verzeichnis von (.+)",3)
    $datei=StringRegExp($txt,"(\d\d\.\d\d\.\d\d\d\d) +(\d\d\:\d\d) +([\d\.]+) +(.+)",3) ;\s statt \n
    If IsArray($datei) Then
    _Add($path[0],$datei[3])
    Else
    $datei=StringRegExp($txt,"(\d\d\.\d\d\.\d\d\d\d) +(\d\d\:\d\d) +<DIR> +(.+)",3)
    If IsArray($datei) Then
    If $datei[2]<>"." And $datei[2]<>".." Then
    _Add($path[0],$datei[2])
    EndIf
    EndIf
    EndIf
    WEnd
    FileClose($file)
    Next
    AdlibUnRegister("__AeroProc")
    AdlibRegister("__AeroProc",20)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Add($pfad,$datn)
    $pfad=$datn&"|"&$pfad
    $pfad=StringReplace($pfad,"","ü")
    $pfad=StringReplace($pfad,"„","ä")
    $pfad=StringReplace($pfad,"”","ö")
    $pfad=StringReplace($pfad,"š","Ü")
    $pfad=StringReplace($pfad,"Ž","Ä")
    $pfad=StringReplace($pfad,"™","Ö")
    _GUICtrlListView_BeginUpdate($ListView1)
    GUICtrlCreateListViewItem($pfad,$ListView1)
    GUICtrlSetBkColor(-1,__C($add))
    _GUICtrlListView_EndUpdate($ListView1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func __C(ByRef $add)
    If $add=1 Then
    $add=0
    Return "0xAAFFAA"
    Else
    $add=1
    Return "0xFFFFAA"
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _MakeParameterized($i1="*",$i2="*",$f="D",$unterordner=1) ;Datei,Endung,Laufwerk,Unterordnerdurchsuchung
    If $i1="" Then $i1="*"
    If $i2="" Then $i2="*"
    If StringLen($f)>3 Then
    $ids=StringLen($f)
    ReDim $ipid[$ids]
    EndIf
    For $x=1 To StringLen($f)
    $lw=StringMid($f,$x,1)&":\"
    $ipid[$x-1]=_NewIndex($mtp&$i1&"."&$i2,$lw,$unterordner) ;######### MTP #########################
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Make()
    Local $unterordner=_Iif(BitAND(GUICtrlRead($Radio1),$GUI_CHECKED)<>0,1,0)
    $f=GUICtrlRead($Input3)
    $i1=GUICtrlRead($Input1)
    $i2=GUICtrlRead($Input2)
    If $i1="" Then
    $i1="*"
    Else
    $i1="*"&$i1&"*"
    EndIf
    If $i2="" Then
    $i2="*"
    EndIf
    If StringLen($f)>3 Then
    $ids=StringLen($f)
    ReDim $ipid[$ids]
    EndIf
    For $x=1 To StringLen($f)
    $lw=StringMid($f,$x,1)&":\"
    $ipid[$x-1]=_NewIndex($mtp&$i1&"."&$i2,$lw,$unterordner) ;############ MTP ######################################
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _Save()
    AdlibUnRegister()
    _AeroWorkAreaDelete($Form1)
    _AeroDelete($gui)
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _time()
    GUICtrlSetData($Label1,_NowTime())
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Save()
    IniWrite("Settings.ini","Options","Folder",GUICtrlRead($Label2))
    IniWrite("Settings.ini","Options","Unterordner",BitAND(GUICtrlRead($Radio1),$GUI_CHECKED))
    IniWrite("Settings.ini","Options","Inp1",GUICtrlRead($Input1))
    IniWrite("Settings.ini","Options","Inp2",GUICtrlRead($Input2))
    IniWrite("Settings.ini","Options","Inp3",GUICtrlRead($Input3))
    IniWrite("Settings.ini","Options","Style",$stnum)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Load()
    Local $tmp
    $mtp=IniRead("Settings.ini","Options","Folder","")
    GUICtrlSetData($Label2,$mtp)
    $tmp=IniRead("Settings.ini","Options","Unterordner",0)
    GUICtrlSetState($Radio1,$tmp)
    $tmp=IniRead("Settings.ini","Options","Inp1","")
    GUICtrlSetData($Input1,$tmp)
    $tmp=IniRead("Settings.ini","Options","Inp2","")
    GUICtrlSetData($Input2,$tmp)
    $tmp=IniRead("Settings.ini","Options","Inp3","CD")
    GUICtrlSetData($Input3,$tmp)
    $stnum=IniRead("Settings.ini","Options","Style",1)
    GUICtrlSetData($Stylechanger1,"<Style "&$stnum&">")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;##################################TheShadowAE - Indexes##########################################
    Func _NewIndex($suche="*.*",$path="D:\",$unterordner=1)
    If StringRight($path,1)<>"\" Then $path&="\"
    Local $uo="/s "
    If $unterordner=0 Then $uo=""
    $ppppp=_GetIndexFile($path,$suche,$unterordner)
    Return _RunDOS("dir "&$path&$suche&" /o "&$uo&">"&$ppppp)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetIndexFile($lw="D",$suche="*.*",$unterordner=1)
    Local $ident=StringLeft($lw,1)&"+"&$suche
    $ident=StringReplace($ident,"*","_")
    $ident=StringReplace($ident,"\","+")
    Return @ScriptDir&"\Indexes\suchergebnis_"&$ident&$unterordner&".index"
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _RunDOS($sCommand)
    Local $nResult = Run(@ComSpec & " /C " & $sCommand, "", @SW_HIDE) ;RunWait->Run
    Return SetError(@error, @extended, $nResult) ;jetzt PID
    EndFunc ;==>_RunDOS

    [/autoit]

    (evtl. #NoTrayIcon ausklammern)

    Danke für jeden Download, Bug, Lob, usw... ;)

    EDIT:
    Die meisten Fehler usw. behoben :) [15]

  • Hallo.
    Du verschwendest viel zu viele resourcen für den Style, bei meinem Pc liegt die Prozessorauslastung bei 80-100%
    ohne überhaupt zu suchen o.Ä.
    Der klassische Style ist öde aber er erfüllt seinen Zweck.

    Zum Skript.
    Rechtsklick -> Irgendeine Auswahl = Error (ohne Items)

    Spoiler anzeigen

    C:\Dokumente und Einstellungen\Pride\Desktop\DesktopSearch\Desktopsuche.au3 (100) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $item=$xx[1]
    $item=^ ERROR

    Wenn ich auf Suchen klicke kommen 2 Menu items, die sagen ich soll warten, die aber sofort wieder verschwinden.
    Deswegen bin ich mir unsicher, ob dein Skript wiklich sucht, da es keine Ergebnisse liefert.

    Die Funktion Gehe zu Heute in dem Kalender ist wirklich überflüssig, die könntest du rausnehmen, keiner wirds vermissen ;)

    Jede Sekunde wird alle 200 MS geupdated

    [autoit]

    AdlibRegister("_time",200)

    [/autoit]


    Das bedeutet, du updatest die Sekunde 5 mal in der Sekunde, 1000 statt 200 würde reichen.

    Tut mir leid für diese Menge an negativen Dingen, aber ich glaube du hast dich zu sehr auf das
    Design konzentriert.

    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Nein das Design ist meine UDF, deswegen hab ich das hier reingeastellt, weil bei vielen der X-Button und Verschieben nicht funktioniert. Die Suche zeigt bei dr nichts an weil nichts gefunden wurde (höchstwarscheinlich), den Arrayerror habe ich nicht min Menü funktioniert und das finde ich komisch weil das ist einfach ein Windowsctrl. Die 200 Millisekunden wollte ich mal ändern das hab ich vergessen.
    Danke für deine Antwort, es wär auch nett wenn du evtl. noch weiterhelfen könntest falls du Probleme mit dem Verschieben/Schließen hast.
    Ich werde mal versuchen alles in den Griff zu kriegen.

    EDIT:
    Die 80% hab ich auch net :huh:

    Der Arrayfehler kam davon, dass bei dir keine Items waren...

    Gibt es bei einer leeren Suche einen Indexordner? Und ist da der entsprechende index drin?

    Welches OS hast du eigentlich?

    EDIT:
    Hat jemand eine Idee wie man für selbstgemalte Buttons Events erstellen kann? Dann wären diese ganzen Probleme erledigt.
    Ich glaube die Verschieb und Schließ-Fehler kommen von der Überlastung auf anderen Computern
    Hab übrigens mal oben die meisten Fehler behoben

    5 Mal editiert, zuletzt von TheShadowAE (7. September 2010 um 20:09)