1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • Ordner nach Anzahl löschen

    • Oscar
    • 23. Mai 2009 um 21:36

    Es wäre hilfreich, wenn Du die Ordnerstruktur, so wie Du sie erstellen willst, mal postest.

    Wenn sich die Ordner mit den inkrementellen Backups in dem Ordner des Voll-Backups befinden, dann kannst Du doch einfach den ganzen Voll-Backup-Ordner (inkl. Unterordner) löschen.

    Oder wie hast Du Dir die Struktur gedacht?

  • Ordner in TV auflisten; nach Größe sortiert

    • Oscar
    • 23. Mai 2009 um 21:16

    Natürlich kann man das Ganze sortieren, aber wenn man jedes Verzeichnis berücksichtigt, dann stimmt hinterher die Baumstruktur nicht mehr.
    Also musst Du Dir erstmal Gedanken darüber machen wie die Sortierung hinterher aussehen soll.

  • Liniendiagramm

    • Oscar
    • 23. Mai 2009 um 21:08

    Bei der rmchart.au3 sind ein paar EndFunc auseinander geschrieben (End Func) und erzeugen Syntaxfehler.
    Wenn man diese aber korrigiert, dann funktioniert alles 1A! :thumbup:

    Super! Vielen Dank!

    P.S.: Darf man die DLL ("rmchart.dll") hier posten? Ansonsten müssen sich Interessierte halt noch das Setup downloaden und installieren.

  • Problem mit ContextMenü

    • Oscar
    • 23. Mai 2009 um 20:51

    Das hat mit der TAB-Definition zu tun. Das Kontextmenü für die Terminliste muss in dem Bereich des TAB6 stehen:

    Spoiler anzeigen
    [autoit]


    $Tab6 = GUICtrlCreateTabItem("Termine")
    $Terminliste = GUICtrlCreateListView("Betreff|Uhrzeit|Datum|Kommentar", 4, 5, 632, 397)

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

    $ContextTermin = GUICtrlCreateContextMenu($Terminliste)
    $KillTerminC = GUICtrlCreateMenuItem("Markierten Termin entfernen", $ContextTermin)
    $KillAllTerminC = GUICtrlCreateMenuItem("Alle Termine entfernen", $ContextTermin)

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

    $Tab7 = GUICtrlCreateTabItem("Adressbuch")
    $Adressbuch = GUICtrlCreateListView("Name|Adresse1|Adresse2|TelefonNr|HandyNr", 4, 5, 632, 397)

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

    $ContextAdress = GUICtrlCreateContextMenu($Adressbuch)
    $KillAdressC = GUICtrlCreateMenuItem("Markierten Kontakt entfernen", $ContextAdress)
    $KillAllAdressC = GUICtrlCreateMenuItem("Alle Kontakte entfernen", $ContextAdress)

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

    Local $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER)

    [/autoit]

    Habe das auch gerade erst bemerkt, weil ich vorher nur das Adressbuch getestet hatte.

  • Liniendiagramm

    • Oscar
    • 23. Mai 2009 um 16:20

    Das Projekt hat noch etwas Zeit. Wenn Du das so in den nächsten 2-3 Wochen schaffst... :D
    Danke schonmal für die ganze Arbeit, die Du Dir damit machst. :thumbup:

  • Liniendiagramm

    • Oscar
    • 23. Mai 2009 um 16:13

    Oh, das sieht gut aus. Sowas könnte ich gerade für mein aktuelles Projekt gebrauchen. Wollte die Daten erst nach Excel exportieren und dort darstellen, aber das hier gefällt mir noch besser. :thumbup:

  • ControlSend ohne betroffene Anwendung zu maximieren?

    • Oscar
    • 23. Mai 2009 um 04:45

    Und wir unterstützen hier trotzdem keine Bots. Ganz gleich welcher Art.
    [Thread closed]

  • kann man Tastendrücke abfangen?

    • Oscar
    • 23. Mai 2009 um 04:42

    Es gibt hier kein Keylogger-Support! :cursing:
    [Thread closed]

  • windows herunterfahren lassen?

    • Oscar
    • 23. Mai 2009 um 04:38

    Die Variablenzuweisung für $time muss innerhalb der Schleife liegen:

    Spoiler anzeigen
    [autoit]


    While 1
    $time = @HOUR & ":" & @MIN
    Sleep(20000)
    If $time = "4:15" Then
    Sleep(100)
    ProcessClose("stern.exe")
    Sleep(100)
    ProcessClose("firefox.exe")
    Sleep(100)
    ProcessClose("botit.exe")
    EndIf
    If $time = "5:05" Then
    Sleep(60000)
    Run("C:\Users\dEUkAliON\Desktop\firefox.exe")
    EndIf
    If $time = "9:30" Then
    Sleep(100)
    Shutdown(32)
    EndIf
    WEnd

    [/autoit]
  • Problem mit ContextMenü

    • Oscar
    • 23. Mai 2009 um 04:31

    Mit den obigen Änderungen funktioniert es bei mir.
    Allerdings wird es wohl nicht lange funktionieren, denn Du erstellst beim "hinzufügen" andauernd neue Fenster ohne sie wieder zu löschen. Du versteckst sie nur. Beim erstellen benutzt Du dann immer das gleiche Handle, sodass sie danach auch nicht mehr geschlossen werden können.
    Also entweder musst Du

    [autoit]

    GUISetState(@SW_HIDE, $AdressAddGUI)

    [/autoit]


    durch

    [autoit]

    GUIDelete($AdressAddGUI)

    [/autoit]


    austauschen
    oder Du änderst Deinen gesamten Code mal dahingehend, dass alle erforderlichen Fenster am Anfang erstellt werden und nur bei Bedarf ein-/ausgeblendet werden.
    Bei so langen Skripten würde ich aber auch den OnEvent-Mode bevorzugen. autoBert: Stimme Dir da voll zu. :)

    P.S.: Damit die Formatierung wieder stimmt, lass mal Tidy drüberlaufen. Dann steigt man wenigstens wieder etwas durch. ;)

  • Problem mit ContextMenü

    • Oscar
    • 22. Mai 2009 um 20:13

    Ja, ein kleiner Fehler.

    Tausche diesen Teil:

    [autoit]


    $ContextTermin = GUICtrlCreateContextMenu($Terminliste)
    $KillTerminC = GUICtrlCreateMenuItem("Markierten Termin entfernen", $Terminliste)
    $KillAllTerminC = GUICtrlCreateMenuItem("Alle Termine entfernen", $Terminliste)

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

    $ContextAdress = GUICtrlCreateContextMenu($Adressbuch)
    $KillAdressC = GUICtrlCreateMenuItem("Markierten Kontakt entfernen", $Adressbuch)
    $KillAllAdressC = GUICtrlCreateMenuItem("Alle Kontakte entfernen", $Adressbuch)

    [/autoit]

    gegen diesen aus:

    [autoit]


    $ContextTermin = GUICtrlCreateContextMenu($Terminliste)
    $KillTerminC = GUICtrlCreateMenuItem("Markierten Termin entfernen", $ContextTermin)
    $KillAllTerminC = GUICtrlCreateMenuItem("Alle Termine entfernen", $ContextTermin)

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

    $ContextAdress = GUICtrlCreateContextMenu($Adressbuch)
    $KillAdressC = GUICtrlCreateMenuItem("Markierten Kontakt entfernen", $ContextAdress)
    $KillAllAdressC = GUICtrlCreateMenuItem("Alle Kontakte entfernen", $ContextAdress)

    [/autoit]
  • _GUICtrlTreeView_CreateDirectory (erstellt ein TreeView mit Verzeichnissen +Dateien)

    • Oscar
    • 21. Mai 2009 um 11:44

    Hier ist noch ein Beispiel-Skript (Funktion etwas geändert), mit der man einen Eintrag für das Parent-Directory bekommt (falls vorhanden).
    Ein Mausklick auf den Eintrag "..\" und das Treeview wird mit dem Parent-Directory neu erstellt.

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>
    $hGui = GUICreate('SelectFolder', 800, 600)
    $hTreeView = GUICtrlCreateTreeView(10, 10, 380, 580, Default, $WS_EX_STATICEDGE)
    GUISetState()
    $sPath = @UserProfileDir
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    ToolTip('Please wait...', @DesktopWidth/2-280, @DesktopHeight/2)
    _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath)
    ToolTip('')

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_PRIMARYUP
    $aInfo = GUIGetCursorInfo($hGui)
    If $aInfo[4] = $hTreeView Then
    $sItem = ControlTreeView($hGui, '', $hTreeView, 'GetSelected')
    If $sItem = '..\' Then
    $sPath = StringRegExpReplace($sPath, '(.+\\).+\\', '$1')
    ToolTip('Please wait...', @DesktopWidth/2-280, @DesktopHeight/2)
    _GUICtrlTreeView_DeleteAll($hTreeView)
    _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath)
    ToolTip('')
    EndIf
    EndIf
    EndSwitch
    WEnd

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

    ;===============================================================================
    ; Function Name: _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
    ; Description:: erstellt ein TreeView mit Verzeichnissen (+Dateien)
    ; Parameter(s): $hTreeView = ControlID/Handle des TreeViews
    ; $sPath = Verzeichnispfad, der dargestellt werden soll
    ; $bFiles = True = auch Dateien anzeigen, False = nur Verzeichnisse
    ; Requirement(s): #include <GuiTreeView.au3>
    ; Return Value(s): Array mit Anzahl der Verzeichnisse=[0] und Dateien=[1]
    ; 0 und @error = 1, wenn der Pfad nicht existiert bzw. kein Verzeichnis ist
    ; 0 und @error = 2, wenn das FileSystemObject nicht erstellt werden konnte
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
    Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
    If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0)
    $sPath = FileGetLongName($sPath)
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    Local $oFSO = ObjCreate('Scripting.FileSystemObject')
    If @error Then Return SetError(2, 0, 0)
    _GUICtrlTreeView_BeginUpdate($hTreeView)
    _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
    Local $aTmp = StringSplit($sPath, '\'), $hParent = $hTreeView
    If $aTmp[0] > 2 Then
    $hParent = GUICtrlCreateTreeViewItem('..\', $hTreeView)
    GUICtrlSetColor(-1, $FolderColor)
    _GUICtrlTreeView_SetIcon($hTreeView, $hParent, 'shell32.dll', 0)
    EndIf
    Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hParent)
    GUICtrlSetColor(-1, $FolderColor)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 0)
    $Folder = $oFSO.GetFolder($sPath)
    _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
    If $bFiles Then
    For $Files In $Folder.Files
    $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
    $aCount[1] += 1
    Next
    EndIf
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
    _GUICtrlTreeView_EndUpdate($hTreeView)
    If $aTmp[0] > 1 Then
    _GUICtrlTreeView_SetIcon($hTreeView, $hParent, 'shell32.dll', 3, 2)
    _GUICtrlTreeView_SetIcon($hTreeView, $hParent, 'shell32.dll', 110, 4)
    GUICtrlSetState($hParent, $GUI_EXPAND)
    EndIf
    GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
    $oFSO = ''
    Return $aCount
    EndFunc ;==>_GUICtrlTreeView_CreateDirectory

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

    Func _CreateDirectoryRecursive($hTreeView, $Folder, $ItemOld, $bFiles, ByRef $aCount)
    Local $hFolderItem, $hFileItem, $FolderColor = 0x0000FF
    For $Subfolder In $Folder.SubFolders
    $hFolderItem = GUICtrlCreateTreeViewItem($Subfolder.Name, $ItemOld)
    GUICtrlSetColor(-1, $FolderColor)
    _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 3, 2)
    _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 110, 4)
    $aCount[0] += 1
    _CreateDirectoryRecursive($hTreeView, $Subfolder, $hFolderItem, $bFiles, $aCount)
    If $bFiles Then
    For $Files In $Subfolder.Files
    $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hFolderItem)
    $aCount[1] += 1
    Next
    EndIf
    Next
    EndFunc ;==>_CreateDirectoryRecursive

    [/autoit]
  • EuroEditor 3.1.0 Beta-Version

    • Oscar
    • 21. Mai 2009 um 10:48

    Raupi, da stimme ich Dir voll zu!
    Für mich ist das Skripte-Forum auch ein Quellcode-Forum. Aus dem Quellcode von anderen kann man eine ganze Menge lernen (wie hat er/sie dies und jenes umgesetzt). Man kann die ein oder andere Funktion übernehmen (Hinweis auf den Author als Kommentar im eigenen Quellcode) oder den Lösungsansatz erweitern/abändern.

    Wenn hier auf https://autoit.de/www.autoit.de auch "fertige" Programme angeboten werden sollen, dann sollte es dafür ein eigenes Unterforum geben, IMHO.
    Ich ärgere mich jedes Mal, wenn ich hier (Skripte) ein ZIP- oder RAR-Archiv downloade und darin dann nur eine EXE-Datei vorfinde (ohne Quellcode).

    Es ist ja schön, zu sehen, was mit AutoIt alles möglich ist, aber Programme ohne Quellcode sollten nicht hier im Skripte-Forum gepostet werden.

  • variable geht verloren

    • Oscar
    • 20. Mai 2009 um 21:16

    Groß-/Kleinschreibung bei Variablen ist unter AutoIt egal.
    Das Problem ist die Deklaration von $team. Diese findet hier innerhalb einer Funktion statt und ist damit eine lokale Variable.
    $team muss also am Anfang als Global deklariert werden (wie MatthiasG ja auch schon geschrieben hat).

  • Taschenrechner

    • Oscar
    • 20. Mai 2009 um 17:43
    Zitat von Sen

    Mal so am Rande,
    gibt es ein wirklich simples Script für einen Taschenrechner?
    ich würde ganz gern einen kleinen in HastyNotes einfügen ;)

    Wie wär's mit:

    [autoit]

    ShellExecute("calc.exe")

    [/autoit]

    ;)

  • Fragen zu GUICtrlListView

    • Oscar
    • 20. Mai 2009 um 04:19

    Man kann eine Group nicht einfach so scrollbar machen.
    Du kannst Dir aber mal "_GUIScrollBars_ScrollWindow" in der Hilfe anschauen. Dort gibt es ein Beispiel für scrollbare Inhalte.

  • Beta-Tester für Euro Editor 3.0.0 Gesucht !

    • Oscar
    • 19. Mai 2009 um 14:15

    Oh nein, bitte nicht alle hier ein "Ich auch" posten!
    Schickt ihm das als PN und nicht hier ins Forum. Mal abgesehen davon, dass dieser Thread hier in "Hilfe & Unterstützung" fehl am Platze ist.

  • Dateien und/oder Ordner rekursiv auflisten

    • Oscar
    • 19. Mai 2009 um 04:40

    Bernd, mir ist gerade noch ein Fehler aufgefallen. Und zwar: Es wird bei der Array-Rückgabe ein Element (das letzte ist immer ein Leerstring) zuviel zurückgegeben. Das liegt am StringSplit, weil am Ende des Strings "$szRetValue" ja immer auch das Delimeterzeichen sitzt.
    Das kann man folgendermassen vermeiden:

    [autoit]

    Return StringSplit(StringTrimRight($szRetValue, StringLen($szDelim)), $szDelim, 1)

    [/autoit]
  • Missing subscript dimensions in "Dim" statement?! :O

    • Oscar
    • 19. Mai 2009 um 04:33

    Wenn Du sowieso nur die Textdateien haben willst, kannst Du doch gleich den Dateifilter entsprechend anpassen: "*.txt"

    Ich habe Dein Script mal entsprechend angepasst:

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <Array.au3>

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

    While 1

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

    HotKeySet("{F1}", "open")
    HotKeySet("{ESC}", "esc")

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

    WEnd

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

    Func open()
    $open = FileSelectFolder("Choose a folder", "", 0, @ScriptDir)
    If @error Then Return ; Wenn der Benutzer auf "Abbrechen" geklickt hat, dann Funktion verlassen
    $aFiles = FileFindRecursive($open, "*.txt", 1, 1) ; Alle Dateien, mit der Endung ".txt" einlesen
    If $aFiles[0] = 1 Then Return ; Wenn keine Datei gefunden wurde, dann Funktion verlassen
    Dim $aLines[$aFiles[0] + 1][2] = [[$aFiles[0],'']] ; Ein 2D-Array erstellen in der Größe von $aFiles[0] (enthält Anzahl der gefundenen Dateien)
    For $i = 1 To $aFiles[0] ; Schleife, um alle gefundenen Dateien durchzugehen
    $aLines[$i][0] = $aFiles[$i] ; den Dateinamen (+Pfad) in das erste Feld des 2D-Array übernehmen
    $aLines[$i][1] = _FileCountLines($aFiles[$i]) ; die Anzahl der Zeilen der Datei in das zweite Feld des 2D-Array
    Next
    _ArrayDisplay($aLines) ; Array anzeigen
    EndFunc ;==>open

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

    Func esc()
    Exit
    EndFunc ;==>esc

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

    ;===============================================================================
    ; Name: FileFindRecursive
    ; Description: Sucht rekursiv nach Dateien und Ordnern
    ; Parameter(s): $szStartPath = Path ab dem gesucht werden soll
    ; $szFileName = Datei nach der gesucht werden soll
    ; $iFlag (optional) = Gibt an was zurückgegeben werden soll
    ; 0 = Dateien und Ordner (default)
    ; 1 = nur Dateien
    ; 2 = nur Ordner (ignoriert $szFileName)
    ; $iRetFormat (optional) = Rückgabeformat
    ; 0 = als String (default)
    ; 1 = als Array
    ; $szDelim (optional) = Trennzeichen wenn $iRetFormat = 0 (@CRLF ist default)
    ; Requirement(s): keine
    ; Return Value(s): bei Erfolg: Ergebnis als String oder Array
    ; bei Fehler:
    ; Author(s): bernd670
    ;
    ;===============================================================================
    Func FileFindRecursive($szStartPath, $szFileName, $iFlag = 0, $iRetFormat = 0, $szDelim = @CRLF)
    Local $hFF, $szFindName, $szRetValue = ""

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

    If $iFlag = Default Then $iFlag = 0
    If $iRetFormat = Default Then $iRetFormat = 0
    If $szDelim = Default Then $szDelim = @CRLF

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

    If StringRight($szStartPath, 1) <> "\" Then $szStartPath &= "\"

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

    If $iFlag < 2 Then
    $hFF = FileFindFirstFile($szStartPath & $szFileName)

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

    If $hFF <> -1 Then
    While True
    $szFindName = FileFindNextFile($hFF)
    If @error Then
    FileClose($hFF)
    ExitLoop
    EndIf
    If $szRetValue <> "" Then $szRetValue &= $szDelim
    $szRetValue &= $szStartPath & $szFindName
    WEnd
    EndIf
    EndIf
    $hFF = FileFindFirstFile($szStartPath & "*.*")

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

    If $hFF = -1 Then Return $szRetValue

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

    While True
    $szFindName = FileFindNextFile($hFF)
    If @error Then
    FileClose($hFF)
    ExitLoop
    EndIf

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

    If StringInStr(FileGetAttrib($szStartPath & $szFindName), "d") Then
    If ($szRetValue <> "") And (StringRight($szRetValue, StringLen($szDelim)) <> $szDelim) Then $szRetValue &= $szDelim
    If ($iFlag = 0) Or ($iFlag = 2) Then $szRetValue &= $szStartPath & $szFindName & "\" & $szDelim
    $szRetValue &= FileFindRecursive($szStartPath & $szFindName & "\", $szFileName, $iFlag, 0, $szDelim)
    EndIf
    WEnd

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

    If $iRetFormat = 0 Then
    Return $szRetValue
    Else
    Return StringSplit(StringTrimRight($szRetValue, StringLen($szDelim)), $szDelim, 1)
    EndIf
    EndFunc ;==>FileFindRecursive

    [/autoit]


    Jetzt hast Du ein 2D-Array mit den Dateinamen und der Anzahl der Zeilen jeder Datei.

  • Missing subscript dimensions in "Dim" statement?! :O

    • Oscar
    • 18. Mai 2009 um 21:41

    Ziemlich konfus!
    Und damit meine ich nicht nur die Formatierung des Quelltextes. ;)
    Beschreib lieber mal, was Du erreichen möchtest.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™