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. BugFix

Beiträge von BugFix

  • log-file auswerten

    • BugFix
    • 21. September 2009 um 11:09

    Du brauchst nur den letzten EAN? Das geht ganz fix mit RegEx:

    [autoit]

    #include <File.au3>
    $start= TimerInit()
    $file = @ScriptDir & '\test_write.txt'

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

    $ret = StringRegExp(FileRead($file), 'EAN-Code: \d+', 3)
    ConsoleWrite('letzter EAN-Code: ' & $ret[UBound($ret)-1] & @CRLF)

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

    ConsoleWrite('Zeit: ' & TimerDiff($start) & @CRLF)

    [/autoit]

    Edit:
    Und wenn du nur den numerischen Wert möchtest, dann so:

    [autoit]

    $ret = StringRegExp(FileRead($file), '(?:EAN-Code: )(\d+)', 3)

    [/autoit]
  • log-file auswerten

    • BugFix
    • 21. September 2009 um 10:56

    Und das hier könnte noch etwas schneller sein (hab mal eine Testdatei mit 2,7 MB verwendet [100600 Zeilen], _FileCountLines($file) ist der Zeitfresser. Mit 1,5 GHz braucht es 2,5 sec. bei mir :

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    $start= TimerInit()
    $file = @ScriptDir & '\test_write.log'
    $lines = _FileCountLines($file)
    $lastLog = ''
    While 1
    If Not StringInStr(FileReadLine($file, $lines), 'Temperatur:') Then
    $lines -= 1
    ContinueLoop
    Else
    Do
    $zeile = FileReadLine($file, $lines)
    $lastLog = $zeile & @CRLF & $lastLog
    $lines -= 1
    Until StringLeft($zeile, 1) = '['
    ExitLoop
    EndIf
    WEnd

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

    ConsoleWrite($lastLog & @CRLF)
    ConsoleWrite('Zeit: ' & TimerDiff($start) & @CRLF)

    [/autoit]
  • log-file auswerten

    • BugFix
    • 21. September 2009 um 10:07

    Du kannst direkt die letzte Zeile lesen:

    [autoit]

    #include< File.au3>
    $file = 'Dein_Pfad_zur_Log'
    $lines = _FileCountLines($file)
    MsgBox(0, 'Inhalt letzte Zeile', FileReadLine($file, $lines))

    [/autoit]

    Falls noch ein Zeilenumbruch zusätzlich enthalten ist, kann die letzte Zeile leer sein - dann halt: $lines-1
    So kannst du dann in einer Schleife rückwärts die letzten 7 Zeilen deines Log-Blocks auslesen.

  • Geeeeeeeeeeeeeeeeeeeeeeeeburtstag

    • BugFix
    • 20. September 2009 um 23:26

    Kaum ist man mal ein WE weg - schon hat der GUN Geburtstag. :D
    Also auch von mir nachträglich Alles Gute.

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • BugFix
    • 20. September 2009 um 23:15

    Wer sich mehr für Irrlicht interesiert: A. Percy pflegt im EN-Forum die Au3IrrLicht. http://www.autoitscript.com/forum/index.php?showtopic=70506&view=findpost&p=516602

  • Doppelklick in Listview auswerten

    • BugFix
    • 16. September 2009 um 21:27

    Kann nicht bestätigt werden.
    Das Skript von mir aus Post #4 läuft problemlos unter 3.3.0.0
    OS: XP

  • Doppelklick in Listview auswerten

    • BugFix
    • 16. September 2009 um 21:10
    Zitat von Jam00

    Ich hab ein Problem, beide scripte funkzionieren bei mir nicht :(

    He, du bist nun schon so lange dabei. Und dann solch eine magere Fehlerbeschreibung. :rolleyes:

  • bildschirm in fenster

    • BugFix
    • 15. September 2009 um 20:37
    Zitat von Greenhorn

    Für eine Bildschirmlupe ist AutoIt zu langsam, schätze ich ...

    Da hast du dich aber gewaltig verschätzt. :D
    Guckst du hier: https://autoit.de/index.php?page…19322#post19322

  • Das Aktuelle SciTe Editor Script aus SciTe Lesen?

    • BugFix
    • 15. September 2009 um 20:12
    Zitat von Mr.Script

    [Ps. Noch an BugFix: C:\Programme\AutoIt3.3\SciTe\API\User.Call.tips.api oder so ungefähr lautet der name einer SciTe Datei in der die Benutzer
    zusätzliche Befehle und Konstanten eintippen können. Diese werden dann
    wenn man ein Script am Screiben ist als einfüg hilfe angeboten.]


    :D Was Calltipps sind, weiß ich. ;)
    Ich erstelle sie zu fast all meinen UDF meist gleich mit Skript zur automatischen Ergänzung der calltip.api.

    Ich verstehe nur nicht in welchem Zusammenhang Calltipps mit deinem Problem stehen.

  • Das Aktuelle SciTe Editor Script aus SciTe Lesen?

    • BugFix
    • 15. September 2009 um 16:48
    Zitat von Mr.Script

    und diese dann nur in die API\User.Call.tip.api File von SciTe

    Also mit dem Satz kann ich gar nix anfangen. Was willst du denn mit den Calltipps?

    Und alles andere erledigt OrganizeIncludes für dich (Analyse des aktuellen Skripts, erforderliche Includes einbinden). Schau dir den Thread von Xenobiologist an, dort ist genau beschrieben, wie du es einrichten mußt.

  • !!!!!Admin-Tool v 1.0 ist fertig nochmals häftig erweitert vbs verarbeitung und bericht speicherung!! Leute ich brauche eure meinung!!!!!

    • BugFix
    • 15. September 2009 um 12:30

    Mal als Tipp:
    Erstelle nicht für jede Versionsänderung deines Skripts einen neuen Thread. Das reißt auch alles aus dem Zusammenhang.
    Editiere einfach deinen ersten Post und aktualisiere dort.
    Damit die Änderung auch im Portal angezeigt wird, postest du dann in diesem Thread neu: Änderungen..... s. Post 1.

  • Exel bzw. Calc frage

    • BugFix
    • 14. September 2009 um 22:42

    So, nun aber richtig.
    Teste mal, ob es alle Gleichungen erfüllt.

    [autoit]

    ConsoleWrite(_Binom('-2x', '3y') & @CRLF)

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

    Func _Binom($a, $b)
    Local $faktorA = Number(StringLeft($a, StringLen($a)-1))
    Local $faktorB = Number(StringLeft($b, StringLen($b)-1))
    Local $signA = StringRight($a, 1)
    Local $signB = StringRight($b, 1)
    Local $prod = 2*$faktorA*$faktorB
    If $prod > 0 Then $prod = '+' & $prod
    Local $2 = Chr(178), $sign = ''
    If Not StringInStr($b, '-') Then $sign = '+'
    Return '(' & $a & $sign & $b & ')' & $2 & ' = ' & $faktorA^2 & $signA & $2 & ' ' & _
    $prod & $signA & $signB & ' +' & $faktorB^2 & $signB & $2
    EndFunc

    [/autoit]
  • Intervallschachtelung per AutoIt?

    • BugFix
    • 14. September 2009 um 22:21

    Intervallschachtelung ist doch ein rekursives Aufrufen einer Funktion. Und das kannst du natürlich auch in AutoIt machen. Achte aber darauf, dass die max. Rekursionstiefe nicht überschritten wird.

  • Etwas im Aktuellen Browserfenster auslesen

    • BugFix
    • 14. September 2009 um 22:05
    Zitat von Stilgar

    Müßen mußt du nicht.


    Da hast du völlig recht. ;)
    Als ich am Schreiben meines Posts war, war deiner noch nicht gepostet. Somit hatte ich mich nicht auf deinen (völlig korrekten) Hinweis bezogen. Den Parameter Attach bei _IECreate hatte ich auch nicht bedacht.

  • Exel bzw. Calc frage

    • BugFix
    • 14. September 2009 um 21:51

    Verstehe nicht ganz, was du jetzt möchtest. Soll eine grafische Auflösung der Funktion stattfinden, oder möchtest du ein Ergebnis haben?

  • Etwas im Aktuellen Browserfenster auslesen

    • BugFix
    • 14. September 2009 um 21:14

    Statt: _IECreate() mußt du _IEAttach() verwenden.

  • Programm aufrufen

    • BugFix
    • 14. September 2009 um 17:54
    Zitat von BigRox

    Wenn da mehr als ein Leerzeichen in Folge im Pfad steht


    Aus mir unerfindlichen Gründen akzeptiert Windows leider solchen Schwachsinn. :huh:
    In meinen Pfaden (außer den von Windoof selbst erstellten) wirst du niemals Leerzeichen finden - wozu gibts den Unterstrich?

  • Taskbar Eigenschaften

    • BugFix
    • 13. September 2009 um 23:35

    Habe noch eine weitere Variante mit Ermittlung von Autohide und Ontop hinzugefügt.

  • Taskbar Eigenschaften

    • BugFix
    • 13. September 2009 um 22:24

    Hi,
    ich war zwar der Meinung, ich hätte diese Funktion schon mal erstellt - aber ich konnte es nicht mehr finden. ;)
    Also somit (evtl. zum zweiten mal) will ich euch nicht davon verschonen. :D
    Mit der Funktion lassen sich Maße und Position der Taskleiste ermitteln.


    EDIT 2021-01-21

    Ich habe mir die Funktion nochmals vorgesucht und die damaligen Fehler in der 2.ten Version korrigiert. Die Werte für die Anordnung sind jetzt auch konform mit Windows (im Uhrzeigersinn: 0=links, 1=oben, 2=rechts, 3=unten). Alles andere erklärt sich selbst.

    AutoIt: _getTaskBarProps.au3
    ;-- TIME_STAMP   2021-01-21 13:19:07   v 0.1
    
    
    Local $tTB = _GetTaskBarProps(True)
    
    ConsoleWrite( _
    'hWnd:     ' & $tTB.hWnd & @CRLF & _
    'Autohide: ' & $tTB.autohide & @CRLF & _
    'uEdge:    ' & $tTB.uEdge & @CRLF & _
    'sEdge:    ' & $tTB.sEdge & @CRLF & _
    'Rect:     ' & '[' & $tTB.left & ', ' & $tTB.top & ', ' & $tTB.right & ', ' & $tTB.bottom & ']' & @CRLF)
    
    ;===================================================================================================
    ; Function Name....: _GetTaskBarProps
    ; Description......: gibt Eigenschaften und Position der Taskbar zurück
    ; Parameter(s).....: [optional] $_bReturnStruct - Rückgabe als (True) Struktur, (False - Standard) Array
    ; Return Value(s)..: Array / Struktur mit den Taskbarwerten
    ;===================================================================================================
    Func _GetTaskBarProps($_bReturnStruct=False)
        Local Const $ABM_GETSTATE = 0x4         ; specify the cbSize.
        Local Const $ABM_GETTASKBARPOS = 0x5    ; specify the cbSize.
        Local Const $ABM_GETAUTOHIDEBAR = 0x7   ; specify the cbSize and uEdge. Returns the handle to the autohide appbar
    
        ; ABM_GETSTATE
        Local Const $ABS_AUTOHIDE = 0x1
        Local Const $ABS_ALWAYSONTOP = 0x2  ; ab Win7 nicht mehr!! --> wenn NICHT $ABS_AUTOHIDE ist es $ABS_ALWAYSONTOP
    
        ; uEdge - ABM_GETAUTOHIDEBAR
        Local Const $ABE_LEFT = 0
        Local Const $ABE_TOP = 1
        Local Const $ABE_RIGHT = 2
        Local Const $ABE_BOTTOM = 3
    
        Local $hWndAppBar = DllCall("user32.dll", 'long', "FindWindowA", 'str', "Shell_traywnd", 'str', "")[0]
        Local $iState, $iEdge, $hWnd, $shell32 = DllOpen("shell32")
        Local $tRC = DllStructCreate("struct;int left;int top;int right;int bottom;endstruct")
        Local $tAPPBARDATA = DllStructCreate("dword cbSize;int hWnd;uint;uint uEdge;int left;int top;int right;int bottom;int")
        $tAPPBARDATA.cbSize = DllStructGetSize($tAPPBARDATA)
        $tAPPBARDATA.hWnd = $hWndAppBar
    
        ; get pos
        $ret = DllCall($shell32, 'int', 'SHAppBarMessage', 'int', $ABM_GETTASKBARPOS, 'ptr', DllStructGetPtr($tAPPBARDATA))
        For $i = 1 To 4
            DllStructSetData($tRC, $i, DllStructGetData($tAPPBARDATA, $i+4))
        Next
    
        ; get state
        $ret = DllCall($shell32, 'int', 'SHAppBarMessage', 'int', $ABM_GETSTATE, 'ptr', DllStructGetPtr($tAPPBARDATA))
        $iState = $ret[0]
    
        ; get Edge
        If $iState = $ABS_AUTOHIDE Then
            For $i = 0 To 3
                $tAPPBARDATA.uEdge = $i
                $ret = DllCall($shell32, 'int', 'SHAppBarMessage', 'int', $ABM_GETAUTOHIDEBAR, 'ptr', DllStructGetPtr($tAPPBARDATA))
                $hWnd = $ret[0]
                If $hWnd Then
                    $iEdge = $i
                    ExitLoop
                EndIf
            Next
            DllClose($shell32)
        Else
            If $tRC.top < 1 And $tRC.left < 1 Then
                    If $tRC.bottom > $tRC.right Then $iEdge = 0
                    If $tRC.right > $tRC.bottom Then $iEdge = 1
            ElseIf $tRC.top < 1 And $tRC.left > 0 Then
                $iEdge = 2
            Else
                $iEdge = 3
            EndIf
        EndIf
    
        ; return array or structure: [.hWnd, .autohide(True/False), .uEdge(0..3), .sEdge(left..bottom), .left, .top, .right, .bottom]
        Local $aEdge[] = ['LEFT','TOP','RIGHT','BOTTOM']
        Local $aRet[] = [$hWndAppBar, ($iState = $ABS_AUTOHIDE), $iEdge, $aEdge[$iEdge], $tRC.left, $tRC.top, $tRC.right, $tRC.bottom]
        Local $tRet = DllStructCreate('int hWnd;bool autohide;uint uEdge;char sEdge[' & StringLen($aEdge[$iEdge]) & '];int left;int top;int right;int bottom;')
        For $i = 0 To UBound($aRet) -1
            DllStructSetData($tRet, $i+1, $aRet[$i])
        Next
    
        Return ($_bReturnStruct ? $tRet : $aRet)
    EndFunc  ;==>_GetTaskBarProps
    Alles anzeigen


    Die alten Versionen belasse ich aber mal im Post.

    _GetTaskBarProps (veraltet)
    [autoit]

    ConsoleWrite("TOP" & @TAB & _GetTaskBarProps('top') & @CRLF)
    ConsoleWrite("LEFT" & @TAB & _GetTaskBarProps('left') & @CRLF)
    ConsoleWrite("HEIGHT" & @TAB & _GetTaskBarProps('height') & @CRLF)
    ConsoleWrite("WIDTH" & @TAB & _GetTaskBarProps('width') & @CRLF)
    ConsoleWrite("ALIGN" & @TAB & _GetTaskBarProps('align') & @CRLF & @CRLF)
    $aProps = _GetTaskBarProps()
    ConsoleWrite("LEFT" & @TAB & $aProps[0] & @CRLF)
    ConsoleWrite("TOP" & @TAB & $aProps[1] & @CRLF)
    ConsoleWrite("RIGHT" & @TAB & $aProps[2] & @CRLF)
    ConsoleWrite("BOTTOM" & @TAB & $aProps[3] & @CRLF)

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

    ;===============================================================================
    ; Function Name: _GetTaskBarProps($hProperty="")
    ; Description:: Ermittelt Taskbareigenschaften
    ; Parameter(s): $hProperty Eigenschaft, die zurückgegeben werden soll
    ; "" (Standard) gibt Rectanglposition als Array zurück [left,top,right,bottom]
    ; "TOP" - X1 obere Position
    ; "LEFT" - Y1 linke Position
    ; "HEIGHT" - Y2-Y1 Höhe der Taskleiste
    ; "WIDTH" - X2-X1 Breite der Taskleiste
    ; "ALIGN" - Anordnung: 1=links, 2=rechts, 3=oben, 4=unten
    ; Return Value(s): s. $hProperty
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _GetTaskBarProps($hProperty="")
    Local $tRect = DllStructCreate("long;long;long;long"), $hWnd, $ret
    $hProperty = StringUpper(StringStripWS($hProperty, 3))
    $ret = DllCall("user32.dll", 'long', "FindWindowA", 'str', "Shell_traywnd", 'str', "")
    $hWnd = $ret[0]
    DllCall("User32.dll", "int", "GetWindowRect", "hwnd", $hWnd, "ptr", DllStructGetPtr($tRect))
    Local $left = DllStructGetData($tRect, 1)
    Local $top = DllStructGetData($tRect, 2)
    Local $right = DllStructGetData($tRect, 3)
    Local $bottom = DllStructGetData($tRect, 4)
    If $hProperty = "" Then
    Local $aOut[4] = [$left, $top, $right, $bottom]
    Return $aOut
    EndIf
    Switch $hProperty
    Case "TOP"
    Return $top
    Case "LEFT"
    Return $left
    Case "HEIGHT"
    Return $bottom - $top
    Case "WIDTH"
    Return $right - $left
    Case "ALIGN"
    If $top < 1 Then
    If $left < 1 Then
    If $bottom > $right Then Return 1
    If $right > $bottom Then Return 3
    EndIf
    EndIf
    If $top < 1 Then
    If $left > 0 Then Return 2
    EndIf
    If $left < 1 Then
    If $top > 0 Then Return 4
    EndIf
    EndSwitch
    EndFunc ;==>_GetTaskBarProps

    [/autoit]
    _GetTaskBarProps2 (veraltet)
    [autoit]


    ConsoleWrite(_GetTaskBarProps2() & @CRLF)

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

    ; gibt Eigenschaft(en) und Position der Taskbar zurück
    Func _GetTaskBarProps2()
    Global Const $ABM_NEW = 0x0
    Global Const $ABM_REMOVE = 0x1
    Global Const $ABM_QUERYPOS = 0x2
    Global Const $ABM_SETPOS = 0x3
    Global Const $ABM_GETSTATE = 0x4
    Global Const $ABM_GETTASKBARPOS = 0x5
    Global Const $ABM_ACTIVATE = 0x6
    Global Const $ABM_GETAUTOHIDEBAR = 0x7
    Global Const $ABM_SETAUTOHIDEBAR = 0x8
    Global Const $ABM_WINDOWPOSCHANGED = 0x9

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

    Global Const $ABN_STATECHANGE = 0x0
    Global Const $ABN_POSCHANGED = 0x1
    Global Const $ABN_FULLSCREENAPP = 0x2
    Global Const $ABN_WINDOWARRANGE = 0x3

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

    Global Const $ABS_AUTOHIDE = 0x1
    Global Const $ABS_ALWAYSONTOP = 0x2

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

    Global Const $ABE_LEFT = 0
    Global Const $ABE_TOP = 1
    Global Const $ABE_RIGHT = 2
    Global Const $ABE_BOTTOM = 3

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

    Local $hWndAppBar, $msg = '', $ret
    Local $tRECT = DllStructCreate('long;long;long;long')
    Local $tAPPBARDATA = DllStructCreate( _
    'long cbSize;' & _
    'hwnd hWnd;' & _
    'long uCallbackMessage;' & _
    'long uEdge;' & _
    'ptr ' & DllStructGetPtr($tRECT) & ';' & _
    'long lParam')
    DllStructSetData($tAPPBARDATA, 'cbSize', DllStructGetSize($tAPPBARDATA))
    $ret = DllCall("shell32", 'long', 'SHAppBarMessage', 'long', $ABM_GETSTATE, 'ptr', DllStructGetPtr($tAPPBARDATA))
    $state = $ret[0]
    Switch $state
    Case False
    $msg &= "Auto Hide= False, Always on Top = False." & @CRLF
    Case $ABS_ALWAYSONTOP
    $msg &= "Always on Top = True." & @CRLF
    Case Else
    $msg &= "Auto Hide = True." & @CRLF
    EndSwitch
    For $position = $ABE_LEFT To $ABE_BOTTOM
    DllStructSetData($tAPPBARDATA, 'uEdge', $position)
    $ret = DllCall("shell32", 'long', 'SHAppBarMessage', 'long', $ABM_GETAUTOHIDEBAR, 'ptr', DllStructGetPtr($tAPPBARDATA))
    $hWndAppBar = $ret[0]
    If $hWndAppBar > 0 Then
    Switch $position
    Case $ABE_LEFT
    $msg &= "LEFT "
    Case $ABE_TOP
    $msg &= "TOP "
    Case $ABE_RIGHT
    $msg &= "RIGHT "
    Case $ABE_BOTTOM
    $msg &= "BOTTOM "
    EndSwitch
    EndIf
    Next
    Return $msg
    EndFunc ;==>_GetTaskBarProps2()

    [/autoit]

    Dateien

    _GetTaskBarProps.au3 3,51 kB – 423 Downloads
  • Probleme mit Schleifen

    • BugFix
    • 13. September 2009 um 20:38

    GE IXI TIM:
    Dein Code hat 'nen Fehler. ;)
    Wenn $x True ist, kommst du gar nicht erst in die While-Schleife. (While $x = False !!)

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™