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

  • Array 3D effektiv durchsuchen

    • Oscar
    • 8. September 2009 um 21:27

    Kommt auf die Daten drauf an, würde ich sagen.
    Wenn das Array sortiert (alphabetisch oder alphanumerisch) vorliegt, dann könnte man mit einem "kleiner/größer als" jeweils die Mitte abfragen.

  • Letzte Zeile auslesen im Edit feld

    • Oscar
    • 8. September 2009 um 21:15

    Geht doch auch mit ControlCommand:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    Global $hWnd
    Global $Befehle

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

    HotKeySet("{ENTER}", "pressed")

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

    Global $Konsole = _Konsol_Create("Konsole", "Test")
    ;=================================================================================================
    ; Function: _Konsol_Create
    ; Varibles: $title = Titel der Konsole
    ; $text = Text des Labels
    ; Author: SB
    ;=================================================================================================
    Func _Konsol_Create($title, $text)
    Dim $Befehle[5]
    Local $dll = DllOpen("user32.dll")
    Dim $hWnd[2]
    $Befehle[0] = "Zeit"
    $Befehle[1] = "Datum"
    $Befehle[2] = "Ip"
    $Befehle[3] = "PC-Name"
    $Befehle[4] = "Username"
    $hWnd[0] = GUICreate($title, 500, 300)
    GUISetBkColor(0x000000)
    $hWnd[1] = GUICtrlCreateEdit("", 0, 0, 500, 300, BitOR($ES_AUTOVSCROLL, $ES_WANTRETURN, $WS_VSCROLL), 0)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor(-1, 0xDCDCDC)
    GUICtrlSetFont(-1, 10, 400, 17, "Georgia")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case - 3
    GUISetState(@SW_HIDE, $hWnd[0])
    ExitLoop
    EndSwitch
    WEnd
    Return $hWnd
    EndFunc ;==>_Konsol_Create

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

    Func pressed()
    $read = ControlCommand($hWnd[0], '', $hWnd[1], 'GetLine', ControlCommand($hWnd[0], '', $hWnd[1], 'GetCurrentLine', ''))
    Switch $read
    Case ''
    GUICtrlSetData($hWnd[1], @CRLF, 1)
    Case 'zip'
    GUICtrlSetData($hWnd[1], @CRLF & 'ZIP-Command' & @CRLF, 1)
    Case Else
    GUICtrlSetData($hWnd[1], ' <- Syntax Error' & @CRLF, 1)
    EndSwitch
    EndFunc ;==>pressed

    [/autoit]
  • dateiversion auslesen

    • Oscar
    • 7. September 2009 um 22:01

    Man könnte die Informationen auch direkt aus den Dateien auslesen. Dazu müsstest Du Dir mal einige Dateien mit einem Hexeditor ansehen und schreiben wo (Offset, an welcher Stelle innerhalb der Datei) die Versioninfos stehen.

  • dateiversion auslesen

    • Oscar
    • 7. September 2009 um 21:33

    Bekommst Du hiermit die gewünschten Informationen:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    $path = FileOpenDialog("Select a file to read attributes",@ScriptDir,"All (*.*)")
    $prop = _GetExtProperty($path, -1)
    _ArrayDisplay($prop,"Property Array")

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

    ;===============================================================================
    ; Function Name: GetExtProperty($sPath,$iProp)
    ; Description: Returns an extended property of a given file.
    ; Parameter(s): $sPath - The path to the file you are attempting to retrieve an extended property from.
    ; $iProp - The numerical value for the property you want returned. If $iProp is is set
    ; to -1 then all properties will be returned in a 1 dimensional array in their corresponding order.
    ; The properties are as follows:
    ; Name = 0
    ; Size = 1
    ; Type = 2
    ; DateModified = 3
    ; DateCreated = 4
    ; DateAccessed = 5
    ; Attributes = 6
    ; Status = 7
    ; Owner = 8
    ; Author = 9
    ; Title = 10
    ; Subject = 11
    ; Category = 12
    ; Pages = 13
    ; Comments = 14
    ; Copyright = 15
    ; Artist = 16
    ; AlbumTitle = 17
    ; Year = 18
    ; TrackNumber = 19
    ; Genre = 20
    ; Duration = 21
    ; BitRate = 22
    ; Protected = 23
    ; CameraModel = 24
    ; DatePictureTaken = 25
    ; Dimensions = 26
    ; Width = 27
    ; Height = 28
    ; Company = 30
    ; Description = 31
    ; FileVersion = 32
    ; ProductName = 33
    ; ProductVersion = 34
    ; Requirement(s): File specified in $spath must exist.
    ; Return Value(s): On Success - The extended file property, or if $iProp = -1 then an array with all properties
    ; On Failure - 0, @Error - 1 (If file does not exist)
    ; Author(s): Simucal ([email='Simucal@gmail.com'][/email])
    ; Note(s):
    ;
    ;===============================================================================
    Func _GetExtProperty($sPath, $iProp)
    Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
    $iExist = FileExists($sPath)
    If $iExist = 0 Then
    SetError(1)
    Return 0
    Else
    $sFile = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1))
    $sDir = StringTrimRight($sPath, (StringLen($sPath) - StringInStr($sPath, "\", 0, -1)))
    $oShellApp = ObjCreate ("shell.application")
    $oDir = $oShellApp.NameSpace ($sDir)
    $oFile = $oDir.Parsename ($sFile)
    If $iProp = -1 Then
    Local $aProperty[35]
    For $i = 0 To 34
    $aProperty[$i] = $oDir.GetDetailsOf ($oFile, $i)
    Next
    Return $aProperty
    Else
    $sProperty = $oDir.GetDetailsOf ($oFile, $iProp)
    If $sProperty = "" Then
    Return 0
    Else
    Return $sProperty
    EndIf
    EndIf
    EndIf
    EndFunc ;==>_GetExtProperty

    [/autoit]
  • _MultiFileCopy

    • Oscar
    • 7. September 2009 um 17:11

    Verschieben ist ja quasi nur ein kopieren und anschließendes löschen der Datei, also musst Du die folgenden Zeilen:

    [autoit]


    $ret = DllCall($DllKernel32, 'int', 'CopyFileExA', 'str', $aSource[$i], 'str', $aReturn[$i], 'ptr', $ptr, 'str', $sArray, 'int', 0, 'int', 0)
    ;~ ConsoleWrite('Return: ' & $ret[0] & @LF)
    If $ret[0] = 0 Then $aMFC[10] = True
    $aMFC[8] += FileGetSize($aSource[$i])

    [/autoit]

    durch diese hier ersetzen:

    [autoit]


    $ret = DllCall($DllKernel32, 'int', 'CopyFileExA', 'str', $aSource[$i], 'str', $aReturn[$i], 'ptr', $ptr, 'str', $sArray, 'int', 0, 'int', 0)
    ;~ ConsoleWrite('Return: ' & $ret[0] & @LF)
    $aMFC[8] += FileGetSize($aSource[$i])
    If $ret[0] = 0 Then
    $aMFC[10] = True
    Else
    FileDelete($aSource[$i])
    EndIf

    [/autoit]
  • dateiversion auslesen

    • Oscar
    • 6. September 2009 um 20:26

    Was sind das für Dateien?
    Beziehungsweise wo (innerhalb der Datei) stehen die Versionsangaben?

  • dateiversion auslesen

    • Oscar
    • 6. September 2009 um 19:54

    Mit FileGetVersion!?

  • Hilfe Minimiertes Fenster

    • Oscar
    • 4. September 2009 um 19:06

    [Thread closed] siehe anderen Thread!

  • Ton bei wechseln der Farbe

    • Oscar
    • 4. September 2009 um 19:05

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Das ist doch wohl deutlich!
    Damit sind auch alle Login-Bots illegal! [Thread closed]

    Und wenn Du Dich nicht normal artikulieren kannst, dann hagelt es demnächst Verwarnungen. Also mässige Deinen Tonfall!

  • Wie bekomme ich mehrer Hexwerte in eine Ini, ohne für jeden einen Schlüssel erstelln zu müssen.

    • Oscar
    • 4. September 2009 um 04:43

    Deine ganze Umwandelei geht aber auch einfacher:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    Dim $HexArray[4] = [0xFFFFFF, 0xC0C0C0, 0x808080, 0x00AA00], $String
    $String = ''
    For $i = 0 To UBound($HexArray) - 1
    $String &= '0x' & String(Hex($HexArray[$i],6))
    Next

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

    MsgBox(0,0,$String)

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

    $Array = StringRegExp($String, '.{8}', 3)
    _ArrayDisplay($array)

    [/autoit]

    Aber je nachdem, was Du vorhast kann auch das Dictionary-Objekt von Vorteil sein.
    Das habe ich auch schon diverse Male benutzt. Gerade wenn Du einen Wert mit allen Werten aus dem ansonsten benutzten Array vergleichen willst, sollte man lieber das Dictionary-Objekt benutzen, denn das ist um Längen schneller.

  • "Run" startet externes Programm sporadisch zweimal

    • Oscar
    • 4. September 2009 um 04:29

    Wenn Du eine Variable innerhalb einer Funktion benutzt, ist es automatisch eine lokale Variable. Es sei denn, Du deklarierst diese vorher als Global.
    Ein:

    [autoit]

    Global $list

    [/autoit]


    am Anfang Deines Scripts sollte das Problem lösen.

  • Suche eine Funktion (Script), um ein JPG Bild in der Größe zu ändern.

    • Oscar
    • 2. September 2009 um 20:39

    Dafür würde ich IrfanView empfehlen, denn dort gibt es spezielle Filter, mit denen das Bild hinterher nicht ganz so schlimm aussieht.

  • MP3-Double-Finder

    • Oscar
    • 2. September 2009 um 20:25

    Kannst Du das mal mit anderen MP3s testen? Evtl. sind bei den beiden MP3s die ID3-Tags falsch.
    Denn ich habe ebenfalls WinXP-Prof und bei mir stimmen die Daten mit [10, 16, 21, 22].

  • MP3-Double-Finder

    • Oscar
    • 2. September 2009 um 19:55

    Alina: Eigentlich dürfte es nicht vorkommen, dass beide Bedingungen (gleiche Datei und gleiche ID3-Tags) zutreffen, denn wenn die Datei gleich ist, überspringe ich die ID3-Prüfung. Die ID3-Tags werden ja auch bei Dateigleichheit angezeigt und so kann man anhand der Daten ja schon ganz gut beurteilen, ob sie wirklich gleich sind.
    Was die fehlerhafte ID3-Tag-Darstellung bei Dir angeht, gehe ich mal davon aus, dass Du nicht WindowsXP benutzt hast. Ich habe die Abfrage in der neuen Version mal den unterschiedlichen Windows-Versionen angepasst und hoffe, dass das so jetzt richtig ist.

    UEZ: Ein Abbruch-Button gab es in der Version 1.1, aber die Abfrage war Mist. :D Jetzt habe ich die [ESC]-Taste dafür vorgesehen (wollte nicht alles umschreiben).
    Ein Binärvergleich anhand der MD5-Checksummen würde (vermutlich) ewig dauern, bei einigen tausend MP3s. Ich glaube nicht, dass das sinnvoll ist. Obwohl es schon cool wäre...


    Achja: Neue Version in Post #1

  • OSVersion-Kennung von Windows7

    • Oscar
    • 2. September 2009 um 19:28

    Ah, das ist abhängig von der AutoIt-Version. Also, ab der Beta: "WIN_7".
    Vielen Dank!

  • OSVersion-Kennung von Windows7

    • Oscar
    • 2. September 2009 um 18:57

    Ich bräuchte mal die Rückgabe von @OSVersion bei Windows7

    [autoit]

    MsgBox(0, 0, @OSVersion)

    [/autoit]
  • TABs wegmachen

    • Oscar
    • 1. September 2009 um 19:44

    vielleicht so:

    [autoit]


    $text = StringRegExpReplace(ClipGet(), '\s', '')
    send($text)

    [/autoit]
  • MP3-Double-Finder

    • Oscar
    • 1. September 2009 um 16:03

    Es gibt eine neue Version (siehe Post #1).
    Man kann jetzt zusätzlich die ID3-Tags in die Suche einbeziehen. Wenn die ID3-Tags von zwei MP3s gleich sind, werden sie ins Listview aufgenommen (mit rotem Hintergrund).
    Die doppelten Dateinamen haben nun einen grünen Hintergrund.

  • dateinamen kürzen

    • Oscar
    • 1. September 2009 um 12:13

    Dein Script müsste so aussehen:

    Spoiler anzeigen
    [autoit]


    $search = FileFindFirstFile("E:\Workflow\10x16\" & "*.jpg")

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

    ; Check if the search was successful
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

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

    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $find = StringInStr($file, "_Seite_", 1, -1)
    $result = StringLeft($file, $find - 1)
    FileMove("E:\Workflow\10x16\" & $file, "E:\Workflow\Ausgabe\" & $result & "_300dpi_cmyk.jpg", 1)
    WEnd

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

    FileClose($search)

    [/autoit]
  • Starplayer (MP3-Player)

    • Oscar
    • 1. September 2009 um 06:14
    Zitat von N8wolf

    mich hat es gestört das man Titel nicht aus der Liste nicht direkt abspielen konnte


    Ähem...mach doch einfach einen Doppelklick auf einen der Einträge. ;)

    @marci: Man nehme eine leere dll, downloade sich das Programm "Reshacker" und packe die Icons in die dll. Und schon hat man eine Icon-dll. :)
    Kein Witz! Die ist wirklich so entstanden.

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™