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

  • Hilfe zu FileSaveDialog

    • Oscar
    • 12. August 2010 um 20:59

    Es gibt auch noch einen Trick, indem man die _Timer-UDF verwendet. Die Timer-Funktion wird auch bei den Datei-Requestern weiterhin aufgerufen, sodass man dort die Endung auslesen kann.
    Das hier funktioniert zumindest unter Win7 (könnte sein, dass das unter XP eine andere CLASS ist):

    Spoiler anzeigen
    [autoit]


    #include <Timers.au3>
    Global $sExt = ''
    $hGui = GUICreate('test')
    _Timer_SetTimer($hGui, 250, '_GetExtension')
    $Filedir = FileSaveDialog("Bitte einen Namen angeben.", @ScriptDir, "css Datei (*.css)|Javascript Datei (*.js)", 2)
    _Timer_KillTimer($hGui, '_GetExtension')
    MsgBox(0,0,$sExt)

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

    Func _GetExtension($hWnd, $Msg, $iIDTimer, $dwTime)
    $sExt = ControlGetText("Bitte einen Namen angeben.", '', '[CLASS:ComboBox; INSTANCE:2]')
    EndFunc

    [/autoit]
  • Kürzester Weg berechnen

    • Oscar
    • 12. August 2010 um 17:06

    Und damit das jetzt nicht zu einem Bot ausartet: [Thread closed]

  • "Unsichtbare Maus"

    • Oscar
    • 11. August 2010 um 14:56

    [closed und verwarnt]

  • DHCP dauerhaft ausstellen, nur wie ?

    • Oscar
    • 11. August 2010 um 14:46

    Und es ist Dir nicht mal in den Sinn gekommen, das Kabel auszutauschen? :rofl:

  • DHCP dauerhaft ausstellen, nur wie ?

    • Oscar
    • 11. August 2010 um 08:33

    Zwei aktive Netzwerk-Adapter können nicht die gleiche IP-Adresse besitzen.
    Du müsstest schon dafür sorgen, dass immer nur einer der beiden Adapter aktiviert ist und dann im Router einstellen, dass dem Rechner (anhand der MAC-Adresse) immer die gleiche IP zugewiesen wird.

  • mp3 Searcher

    • Oscar
    • 11. August 2010 um 07:42

    Bei den Verzeichnissen "$Recycle.Bin" und "RECYCLER" handelt es sich um die Systemverzeichnisse für den Papierkorb.
    Diese liefern beim Einsatz von DirGetSize ein Ergebnis von "0", würden also von meiner Funktion zum löschen leerer Verzeichnisse gelöscht werden. Das werden sie aber nicht, weil DirRemove bei diesen Verzeichnissen ebenfalls fehlschlägt.
    Ich habe jetzt aber die Funktion zum einlesen der Dateien und Verzeichnisse dahingehend geändert, dass Verzeichnisse und Dateien mit "S"-Attribut (System) ignoriert werden. Neue Version in Post #1.

  • Harddisk Kapazität ermitteln

    • Oscar
    • 10. August 2010 um 21:53

    Ja, das sind Bytes.

    Ich hätte da auch noch eine Funktion zum umrechnen (in KB, MB, GB oder automatisch):

    Spoiler anzeigen
    [autoit]


    ;===============================================================================
    ; Function Name: _ByteAutoSize($iSize[, $iRound][, $iFormat][, $bThousands])
    ; Description:: Gibt einen Bytewert in einer bestimmten Einheit zurück
    ; Parameter(s): $iSize = Größe in Byte übergeben
    ; $iRound = Anzahl der Nachkommastellen (0...8)
    ; $iFormat = bestimmt den Rückgabewert
    ; 0 = Automatisch (je nach übergebenen Wert)
    ; 1 = in Byte
    ; 2 = in KByte
    ; 3 = in MByte
    ; 4 = in GByte
    ; $bThousands = Rückgabe mit Tausendertrennzeichen (True/False)
    ; Requirement(s): #include <String.au3>
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _ByteAutoSize($iSize, $iRound = 2, $iFormat = 0, $bThousands = True)
    Local $aSize[4] = [' Byte', ' KByte', ' MByte', ' GByte'], $sReturn
    If $iFormat < 0 Or $iFormat > 4 Then $iFormat = 0
    If $iRound < 0 Or $iRound > 8 Then $iRound = 2
    If Not IsBool($bThousands) Then $bThousands = False
    $iSize = Abs($iSize)
    If $iFormat = 0 Then
    For $i = 30 To 0 Step -10
    If $iSize > (2 ^ $i) Then
    $iFormat = $i / 10 + 1
    ExitLoop
    EndIf
    Next
    EndIf
    If $iFormat = 0 Then $iFormat = 1
    $sReturn = StringFormat('%.' & $iRound & 'f', Round($iSize / (2 ^ (($iFormat - 1) * 10)), $iRound))
    If $bThousands Then $sReturn = _StringAddThousandsSep($sReturn, '.', ',')
    Return $sReturn & $aSize[$iFormat - 1]
    EndFunc ;==>_ByteAutoSize

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _StringAddThousandsSep
    ; Description ...: Returns the original numbered string with the Thousands delimiter inserted.
    ; Syntax.........: _StringAddThousandsSep($sString[, $sThousands = -1[, $sDecimal = -1]])
    ; Parameters ....: $sString - The string to be converted.
    ; $sThousands - Optional: The Thousands delimiter
    ; $sDecimal - Optional: The decimal delimiter
    ; Return values .: Success - The string with Thousands delimiter added.
    ; Author ........: SmOke_N (orignal _StringAddComma
    ; Modified.......: Valik (complete re-write, new function name)
    ; ===============================================================================================================================
    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]
  • Hex änderung

    • Oscar
    • 10. August 2010 um 21:05

    Da das ja nichts mit AutoIt zu tun hat, habe ich das mal nach Off-Topic verschoben.

    Aber das Problem ist doch auch relativ einfach zu lösen:
    - Backup der Datei erstellen (zur Sicherheit)
    - Hex-Editor starten (falls nicht vorhanden: HxD downloaden).
    - Datei laden
    - entsprechende Zeichen ändern
    - Datei speichern

    Fertig.

  • Harddisk Kapazität ermitteln

    • Oscar
    • 10. August 2010 um 20:54

    Hilft Dir das hier weiter:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $aDrives = _CI_GetHarddrives()
    _ArrayDisplay($aDrives)

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

    Func _CI_GetHarddrives($strComputer = '.')
    Local $aReturn[1][7] = [[ _
    'Bezeichnung:', 'Größe:', 'Anschluss:', 'Bytes/Sektor:', 'Anzahl der Sektoren:', _
    'PNPDeviceID:', 'Status:']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][7]
    $aReturn[$x][0] = $objItem.Model
    $aReturn[$x][1] = $objItem.Size
    $aReturn[$x][2] = $objItem.InterfaceType
    $aReturn[$x][3] = $objItem.BytesPerSector
    $aReturn[$x][4] = $objItem.TotalSectors
    $aReturn[$x][5] = $objItem.PNPDeviceID
    $aReturn[$x][6] = $objItem.Status
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetHarddrives

    [/autoit]
  • mp3 Searcher

    • Oscar
    • 10. August 2010 um 18:56

    Ich bin mir nicht sicher, ob Du die Funktion richtig verstanden hast. Hast Du vorher ein Verzeichnis/Festplatte einlesen lassen?
    Die Suche mit dem Suchbegriff ist eine Listensuche, soll heißen: sie sucht nicht auf der Platte, sondern in dem Listview (so denn Einträge vorhanden sind).

    Einzelne Dateien kann man mit einem Doppelklick auf einen Eintrag abspielen lassen (mit Standard-MP3-Player).

  • [TCP] Tcp Packets an WoW senden mit den Gm Command

    • Oscar
    • 10. August 2010 um 17:59

    Wir werden das hier nicht unterstützen. Zum einen, weil es (vermutlich) den AGB des Betreibers widerspricht und zum anderen deswegen:

    Zitat

    Diese Liste ist ausdrücklich nicht vollständig. Programme, die dem hinter diesen Regeln stehenden Geist widersprechen, sind ebenso als nicht erlaubt anzusehen

    Solche Fragen (und Antworten) ziehen nur Botter hier ins Forum und das wollen wir nicht.
    [Thread closed]

  • mp3 Searcher

    • Oscar
    • 8. August 2010 um 11:07

    Ich verstehe Dein Problem mit der CPU-Last nicht so wirklich. Die entsteht doch nur, wenn das Programm auch arbeitet (suchen, sortieren, ID3-Tags einlesen, etc.).
    Natürlich könnte ich da ein paar Sleeps einfügen, aber dann dauern die Aktionen auch sehr viel länger. Beides geht nunmal nicht. ;)

    Es gibt nun aber noch eine neue Version (Post #1). Ich fand eine Möglichkeit zum löschen leerer Verzeichnisse ganz brauchbar. Beim löschen/umkopieren sind bei mir immer einige leere Verzeichnisse übriggeblieben und so brauch ich die nicht von Hand entfernen. :)

  • _TicksToTimeFormat

    • Oscar
    • 6. August 2010 um 22:10

    Stimmt, Du hast recht! Fehler beseitigt!
    Danke, für die Rückmeldung! :thumbup:

  • _GetUniqueFileName

    • Oscar
    • 6. August 2010 um 19:07

    Freut mich, wenn ihr die Funktion ebenfalls gebrauchen könnt. :)

    Mit dem Funktionsnamen hast Du recht, pee. Mir fiel nur nichts passendes ein. Hab's jetzt geändert. Danke!

  • Klick auf Login-Button

    • Oscar
    • 6. August 2010 um 18:50

    Irgendwie schrillen bei mir sämtliche Alarmglocken, wenn jemand einen automatischen Login für ein Online-Konto skripten will. :huh:

    Nie und nimmer würde ich in ein solches Skript meine Zugangsdaten eingeben.

    Zitat

    Dient ja nur zum Test der Funktion.


    Ich würde sagen, da suchst Du Dir besser eine andere Website für aus.

  • _GetUniqueFileName

    • Oscar
    • 6. August 2010 um 04:49

    Hier kommt wieder mal eine kleine Hilfsfunktion (brauchte ich gerade).
    Damit kann man testen, ob eine Datei bereits existiert. Wenn ja, wird automatisch ein Zähler an den Dateinamen angehängt, sodass man sicher sein kann, dass man keine Datei überschreibt.

    Spoiler anzeigen
    [autoit]


    $sFilename = @AutoItExe
    $sFilename = _GetUniqueFileName($sFilename)
    If @error Then
    ConsoleWrite('Fehler = ' & @error & @CR)
    Else
    ConsoleWrite('Dateiname = "' & $sFilename & '"' & @CR)
    EndIf

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

    ;===============================================================================
    ; Function Name: _GetUniqueFileName($sPath)
    ; Description:: Wenn der Dateiname bereits existiert wird ein Zähler
    ; in Form von: "_(1)" an den Dateinamen angehängt.
    ; Parameter(s): $sPath = kompletter Pfad der Datei
    ; Requirement(s): -
    ; Return Value(s): bei Erfolg = der (neue) Dateiname
    ; bei Fehler wird @error = 1 (Pfad falsch angegeben)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _GetUniqueFileName($sPath)
    Local $aPath, $sNumber = '', $iCount = 0
    $aPath = StringRegExp($sPath, '(.+\\)(.+)(\..+)', 3)
    If @error Then Return SetError(1, 0, 0)
    While FileExists($aPath[0] & $aPath[1] & $sNumber & $aPath[2])
    $iCount += 1
    $sNumber = '_(' & $iCount & ')'
    WEnd
    Return $aPath[0] & $aPath[1] & $sNumber & $aPath[2]
    EndFunc ;==>_GetUniqueFileName

    [/autoit]
  • mp3 Searcher

    • Oscar
    • 5. August 2010 um 21:34

    Ich habe gerade fast 7000 Dateien verschoben. Wenn Quelle und Ziel auf der selben Partition liegen geht das wirklich ruckzuck (keine Zeit für eine Kaffeepause). :D
    Dabei ist mir aber noch was aufgefallen: Wenn das "R"-Bit (ReadOnly) bei den Dateiattributen gesetzt ist, dann schlägt logischerweise das verschieben fehl (der Pfad in der Liste wird nicht angepasst).
    Man sollte also vorher mal die Dateiattribute entsprechend anpassen.

  • Verschlüsseln

    • Oscar
    • 5. August 2010 um 13:57

    Erst nach dem µIT. ;)

  • Habt ihr eine G19?

    • Oscar
    • 5. August 2010 um 13:29

    Ich besitze zwar ebenfalls eine Tastatur von Logitech, weil mir das Tastaturlayout gefällt (vor allem: grosse Return- und grosse Backspacetaste) und ich den Tastenanschlag mag, aber 180 € würde ich für eine G19 nie ausgeben.
    Mir gefällt daran allerdings das Display. Auf die "tausend" Zusatztasten und die Beleuchtung könnte ich hingegen verzichten.

  • mp3 Searcher

    • Oscar
    • 5. August 2010 um 11:12

    So, die neue Version ist fertig (siehe Post #1).

    Größte Neuerung ist natürlich das automatische einsortieren (anhand der ID3-Tags). Das kann bei einer großen MP3-Sammlung recht lange dauern, wenn alle Dateien kopiert werden müssen.
    Und genau hier ist der Vorteil beim verschieben der Dateien. Wenn Quelle und Ziel nämlich auf der selben Festplatten-Partition liegen, findet lediglich ein "umbenennen" statt. Das geht dann sehr schnell.

    Ich habe die Funktionen hier zwar ausgiebig getestet (Win7, 64 Bit, positiver Erfolg), aber versucht es bei euch erstmal mit einer kleinen Menge an Test-MP3s, bevor ihr das Programm auf eure richtige MP3-Sammlung loslasst. :)

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™