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

  • String (Zeit) bearbeiten

    • BugFix
    • 11. Juli 2007 um 21:35

    Anderer Gedanke - warum die Stringlänge prüfen?
    - Minuten bleiben immer 2-stellig
    - also ändert sich nur die Position von ':'

    [autoit]

    Global $str[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str) - 1
    If StringInStr($str[$i], ':') = 2 Then
    ConsoleWrite('0' & $str[$i] & @CRLF)
    Else
    ConsoleWrite($str[$i] & @CRLF)
    EndIf
    Next

    [/autoit]
  • _Array2DSplit

    • BugFix
    • 11. Juli 2007 um 21:08

    Zitat aus meiner Funktionsbeschreibung:

    Zitat

    Die Variable für Ziel-Array muß auch als Array deklariert werden.

    Also muß dein Code so aussehen:

    [autoit]


    Dim $XML, $XML2[1] ; tatsächliche Größe paßt die Funktion an
    _FileReadToArray("E:\test.xml", $XML)
    _Array2DSplit($XML, $XML2, 3)
    _ArrayDisplay($XML)
    _ArrayDisplay($XML2)

    [/autoit]
  • Script in Scite geht, die EXE nicht ?!?!

    • BugFix
    • 10. Juli 2007 um 08:03

    Du mußt alle deine Includes am Skriptanfang schreiben.
    If Bedingung Then #include geht nach dem Kompilieren definitiv nicht. - Woher sollen dann die #includes bezogen werden??

  • Slide Window

    • BugFix
    • 8. Juli 2007 um 14:11

    Nicht dass ihr denkt, ich erstelle nur Array-Funktionen :D

    Mit _SlideWindow($hWnd, [$iDirection=1 [, $Left=-1 [, $Top=-1 [, $Speed=2000]]]]) könnt ihr Fenster von/ nach allen 4 Seiten hereingleiten/ herausgleiten lassen.
    Die Geschwindigkeit ist allerdings sehr rechnerspezifisch, da die Bewegung Pixel für Pixel stattfindet, ist der Zeitfaktor für den Schleifendurchlauf je nach zurückzulegendem Weg recht groß.
    Erst bei sehr großen Werten (> 15000) entspricht dieser Wert etwa der Einblend/Ausblenddauer.
    $iDirection ist der Richtungsvektor:
    1 bis 4 von (rechts-unten-links-oben) - reingleiten
    -1 bis -4 nach (rechts-unten-links-oben) - rausgleiten
    $Left, $Top : Zielposition
    $Speed :Gleitgeschwindigkeit (sehr individuell)

    Wenn kein Fenstername/handle oder ein nicht existierender übergeben wird, wird die Funktion das aktive Fenster verwenden.

    EDIT:
    Habe das ganze jetzt noch um die Diagonalen erweitert.
    Der Richtungsvektor sieht jetzt so aus:

    Code
    8	4	5
    
    
    3		1
    
    
    7	2	6

    Hier mal ein Bsp. zum Testen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Main = GUICreate("Main Window", 700, 60, (@DesktopWidth-700)/2, 30)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    GUICtrlCreateLabel("Left, Top:", 20, 23, 50, 17)
    $inX = GUICtrlCreateInput("-1", 80, 20, 40,20)
    $inY = GUICtrlCreateInput("-1", 130, 20, 40,20)
    $btn = GUICtrlCreateButton("Slide In/Out", 600, 20, 80, 20)
    GUICtrlSetOnEvent(-1, "_slide")
    GUICtrlCreateLabel("Richtung (OUT: -1 bis -4 / IN: 1 bis 4):", 180, 23, 200, 17)
    $inDir = GUICtrlCreateInput("1", 370, 20, 40, 20)
    GUICtrlCreateLabel("Speed:", 415, 23, 35, 17)
    $inTime = GUICtrlCreateInput(2000, 455, 20, 40, 20)
    GUICtrlCreateLabel("benötigte Zeit:", 515, 8, 70, 17, $SS_CENTER)
    $usedTime = GUICtrlCreateLabel("", 515, 30, 70, 17, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFF0000)

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

    $Child = GUICreate("Slide Window", 400, 300, -1, -1)

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

    GUISetState(@SW_SHOW, $Main)
    While 1
    Sleep(100)
    WEnd

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

    Func _Ende()
    Exit
    EndFunc

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

    Func _slide()
    Local $x = GUICtrlRead($inX), $y = GUICtrlRead($inY)
    If GUICtrlRead($inDir) < 0 Then
    WinMove($Child, '', (@DesktopWidth-400)/2, (@DesktopHeight-300)/2)
    GUISetState(@SW_SHOW, $Child)
    Sleep(1000)
    Else
    GUISetState(@SW_SHOW, $Child)
    EndIf
    $begin = TimerInit()
    _SlideWindow($Child, GUICtrlRead($inDir), $x , $y, GUICtrlRead($inTime) )
    GUICtrlSetData($usedTime, Int(TimerDiff($begin)) & ' ms')
    Sleep(1000)
    GUISetState(@SW_HIDE, $Child)
    EndFunc

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

    ;-----------------------------------------------------------------------------------------------------------------------
    ; Function _SlideWindow($hWnd, [$iDirection=1 [, $Left=-1 [, $Top=-1 [, $Speed=2000]]]])
    ;
    ; Description slide a window in/out from/to right/bottom/left/top in a given time
    ;
    ; Parameter $hWnd window -id
    ; $iDirection direction to slide in / out
    ; right: 1 / -1 top-right: 5 / -5
    ; bottom: 2 / -2 bot.-right: 6 / -6
    ; left: 3 / -3 bot.-left: 7 / -7
    ; top: 4 / -4 top-left: 8 / -8
    ; $Left window left position, default -1 (center)
    ; $Top window top position, default -1 (center)
    ; $Speed default 2000, used time in relationship to hardware, minimum=0
    ;
    ; Note Don't work with minimized windows. Works with hidden windows.
    ; If $hWnd does'nt exist, the active window will be used
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;-----------------------------------------------------------------------------------------------------------------------Func _SlideWindow($hWnd, $iDirection=1, $Left=-1, $Top=-1, $Speed=2000)
    Local $pos = WinGetPos($hWnd)
    Local $startX, $endX, $startY, $endY, $tpp, $x, $y
    If $Top = -1 Then $Top = (@DesktopHeight-$pos[3])/2
    If $Left = -1 Then $Left = (@DesktopWidth-$pos[2])/2
    If ( Not IsNumber($Speed) ) Or ( $Speed < 0 ) Then $Speed=2000
    If ($iDirection < -8) Or ($iDirection = 0) Or ($iDirection > 8) Then $iDirection = 1
    Switch $iDirection
    Case 1
    $startX = @DesktopWidth
    $endX = $Left
    $tpp = Int($Speed/($startX-$Left))
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case 2
    $startY = @DesktopHeight
    $endY = $Top
    $tpp = Int($Speed/($startY-$Top))
    For $i = $startY To $endY Step -1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case 3
    $startX = 0-$pos[2]
    $endX = $Left
    $tpp = Int($Speed/($Left+$pos[2]))
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case 4
    $startY = 0-$pos[3]
    $endY = $Top
    $tpp = Int($Speed/($Top+$pos[3]))
    For $i = $startY To $endY Step 1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case 5
    $startX = @DesktopWidth
    $startY = 0-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $startX-$endX
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case 6
    $startX = @DesktopWidth
    $startY = @DesktopHeight-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $startX-$endX
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case 7
    $startX = 0-($pos[2])
    $startY = @DesktopHeight-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $endX+Abs($startX)
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case 8
    $startX = 0-($pos[2])
    $startY = 0-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $endX-$startX
    $absY = $endY+Abs($startY)
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, $startY)
    Sleep($tpp)
    $startY += $stepY
    Next
    Case -1
    $startX = $pos[0]
    $tpp = Int($Speed/(@DesktopWidth-$startX))
    For $i = $startX To @DesktopWidth Step 1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case -2
    $startY = $pos[1]
    $tpp = Int($Speed/(@DesktopHeight-$startY))
    For $i = $startY To @DesktopHeight Step 1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case -3
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = 0-$pos[2]
    $tpp = Int($Speed/($pos[2]+$startX))
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case -4
    $startX = $pos[0]
    $startY = $pos[1]
    $endY = 0-$pos[3]
    $tpp = Int($Speed/($pos[3]+$startY))
    For $i = $startY To $endY Step -1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case -5
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = @DesktopWidth
    $endY = 0-$pos[3]/2
    $absX = $endX-$startX
    $absY = $startY+Abs($endY)
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY -= $stepY
    Next
    Case -6
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = @DesktopWidth
    $endY = @DesktopHeight-($pos[3]/2)
    $absX = $endX-$startX
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case -7
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = 0-$pos[2]
    $endY = @DesktopHeight-($pos[3]/2)
    $absX = $startX+Abs($endX)
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case -8
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = 0-$pos[2]
    $endY = 0-$pos[3]/2
    $absX = $startX+Abs($endX)
    $absY = $startY+Abs($endY)
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY -= $stepY
    Next
    EndSwitch
    EndFunc ;==>_SlideWindow

    [/autoit]

    Dateien

    _SlideWindow.au3 6,15 kB – 389 Downloads
  • Ordner in Laufwerk suchen...

    • BugFix
    • 8. Juli 2007 um 09:40

    Also was jetzt?
    - du kennst den Ordnernamen
    - du weißt aber nicht auf welchem Laufwerk
    - du weißt nicht in welchem anderen Verzeichnis er sein könnte

    ==> also rekursiv ein Laufwerk nach dem anderen durchsuchen

    So gehts, nur noch in einer Schleife laufen lassen um alle Laufwerke zu durchsuchen.

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

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

    $StartPfad = "C:\"
    $SuchOrdner = "ORDNER-NAME"

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

    $Daten = _GetFileList($StartPfad, "n",1) ; erzeugt Array mit allen Ordnernamen
    $ret = _ArraySearch($Daten, $SuchOrdner,1,0,0,True) ; durchsucht nach Ordner
    If $ret > 0 Then MsgBox(0, '', $Daten[$ret]) ; gibt den kpl.Pfad zurück

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

    ; AutoIt Version: 3.0
    ; Language: English
    ; Platform: Win9x/NT/XP
    ; Author: jos van der Zande
    ;
    ; Find files in directory and subdirectories and return it in an Array, all coded in Autoit3
    ;
    ;********************************************************************************
    ;Recursive search for filemask
    ;********************************************************************************

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

    Func _GetFileList($T_DIR,$T_MASK,$DIR_ONLY=0)
    Dim $N_DIRNAMES[200000] ; max number of directories that can be scanned
    Local $N_DIRCOUNT = 0
    Local $N_FILE
    Local $N_SEARCH
    Local $N_TFILE
    Local $N_OFILE
    Local $T_FILENAMES
    Local $T_FILECOUNT
    Local $T_DIRCOUNT = 1
    Local $FILEMASK
    ; check Filemask \ for empty File-Array by GetDirOnly
    If $FILEMASK = "n" Then $FILEMASK = "*.no"
    ; remove the end \ If specified
    If StringRight($T_DIR,1) = "\" Then $T_DIR = StringTrimRight($T_DIR,1)
    $N_DIRNAMES[$T_DIRCOUNT] = $T_DIR
    ; Exit if base dir doesn't exists
    If Not FileExists($T_DIR) Then Return 0
    ; keep on looping until all directories are scanned
    While $T_DIRCOUNT > $N_DIRCOUNT
    $N_DIRCOUNT = $N_DIRCOUNT + 1
    ; find all subdirs in this directory and save them in a array
    $N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\*.*")
    While 1
    $N_FILE = FileFindNextFile($N_SEARCH)
    If @error Then ExitLoop
    ; skip these references
    If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
    $N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
    ; if Directory than add to the list of directories to be processed
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") > 0 Or _
    StringInStr(FileGetAttrib( $N_TFILE ),"D,H,S") > 0 Then
    $T_DIRCOUNT = $T_DIRCOUNT + 1
    $N_DIRNAMES[$T_DIRCOUNT] = $N_TFILE
    EndIf
    Wend
    FileClose($N_SEARCH) ; find all Files that mtach the MASK
    $N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\" & $T_MASK )
    If $N_SEARCH = -1 Then ContinueLoop
    While 1
    $N_FILE = FileFindNextFile($N_SEARCH)
    If @error Then ExitLoop
    ; skip these references
    If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
    $N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
    ; if Directory than add to the list of directories to be processed
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0 Or _
    StringInStr(FileGetAttrib( $N_TFILE ),"D,H,S") = 0 Then
    $T_FILENAMES = $T_FILENAMES & $N_TFILE & @CR
    $T_FILECOUNT = $T_FILECOUNT + 1
    ;MsgBox(0,'filecount ' & $T_FILECOUNT ,$N_TFILE)
    EndIf
    Wend
    FileClose($N_SEARCH)
    Wend
    If $DIR_ONLY = 0 Then
    $T_FILENAMES = StringTrimRight($T_FILENAMES,1)
    $N_OFILE = StringSplit($T_FILENAMES,@CR)
    Return( $N_OFILE )
    Else
    ReDim $N_DIRNAMES[$N_DIRCOUNT+1]
    $N_DIRNAMES[0] = $N_DIRCOUNT
    Return $N_DIRNAMES
    EndIf
    EndFunc ;==>_GetFileList

    [/autoit]
  • Brauche Hilfe: Farbereiche Pixelsearch

    • BugFix
    • 7. Juli 2007 um 22:35

    Parameter: shade-variation [optional]
    A number between 0 and 255 to indicate the allowed number of shades of variation of the red, green, and blue components of the colour. Default is 0 (exact match).

    Farbschattierung wird damit eingestellt.

  • wie absoluten Link aus relativem erstellen?

    • BugFix
    • 7. Juli 2007 um 22:31

    Oops, dann hab ich 'n Problem an meinem Desktop-PC. Da funzt das nicht, aber am Laptop schon.

    Danke.

  • wie absoluten Link aus relativem erstellen?

    • BugFix
    • 7. Juli 2007 um 22:01

    Bei meinem 'Guckloch' - Programm lese ich aus der Portalseite die Links zu den letzten Beiträgen aus.
    Das hat aber den Nachteil, dass sie relativ zur Portalseite adressiert sind und ich somit nur automatisert arbeiten kann, indem ich den IE verwende ( _IELinkClickByIndex() ).
    Ich würde gern bei Doppelklick auf einen Eintrag diesen im Standardbrowser öffnen. Kein Problem, wenn ich den absoluten Link habe.
    Daher meine Frage: Kann mir jemand sagen, wie ich zu den absoluten Links komme?

    zum Vergleich:
    relativer Link: 'http://www.autoit.de/thread.php?goto=lastpost&threadid=3174&sid='
    absoluter Link: 'http://www.autoit.de/thread.php?postid=22416#post22416'

  • Brauche Hilfe: Farbereiche Pixelsearch

    • BugFix
    • 7. Juli 2007 um 21:42
    Zitat

    oragne ist ja ffffff
    aber was ist helles organe oder dunkles orange?


    Suche im Board benutzen?....
    Ich hatte dazu mal ein Tool erstellt.

    ...und 0xffffff ist weiß !!!

  • "Guckloch"

    • BugFix
    • 4. Juli 2007 um 11:24

    Gute Idee, werde ich machen.
    Vielleicht auch nur Veränderungen einblenden.
    Mach ich die Tage mal.

  • "Guckloch"

    • BugFix
    • 4. Juli 2007 um 10:47

    Ja, hatte er. Nur war die Vorgehensweise eine andere.
    Hab jetzt bei mir noch eingefügt, dass Veränderungen zum letzten Check farbig hervorgehoben werden.

  • ich bin zu blöd!

    • BugFix
    • 4. Juli 2007 um 10:06

    Die Übertragung fehlt:

    [autoit]

    _IEFormSubmit ($oForm)

    [/autoit]
  • "Guckloch"

    • BugFix
    • 4. Juli 2007 um 09:52

    Hi,
    ich hatte es gestern schon mal kurz drin, wegen eines zu spät bemerkten Bugs aber wieder rausgenommen. :rolleyes:

    So, nun funzt es aber. Ähnlich, wie das Guckloch vom Browser. Aber mit der gesamten Liste der letzten Einträge und ohne sichtbares Browserfenster.
    Das Fenster mit der Tabelle wird nach jeder Aktualisierung (wenn vorher geschlossen) neu eingeblendet.
    Programmende mit <Alt+e>.

    Edit:

    Habe alle Anregungen übernommen. ;)
    - nach Programmstart wird die Tabelle mit den letzten 10 Einträgen gezeigt
    - per Checkbox wählbar:
    • nur einblenden, wenn Änderungen
    • nur Änderungen auflisten (bedingt automatisch den vorigen Punkt)

    - bei Anzeige der gesamten Liste, werden Änderungen zur letzten Abfrage farblich markiert
    - Aktualisierungsintervall kann über Inputfeld frei gewählt werden
    - mit Doppelklick auf Listeneintrag, wird dieser in einer zweiten IE-Objekt-Instanz aufgerufen; Aktualisierung läuft auf erster Instanz weiter
    - das IE-Fenster sollte zum Schließen per HotKey invisible gesetzt werden
    • beim Schließen des Fensters über Button oder Menü wird sonst auch das Objekt gelöscht
    • falls es doch passiert - kein Problem, Objekt wird neu erstellt (kostet nur etwas Zeit)

    - HotKeys:
    • 'Alt+c' IE-Fenster invisible setzen
    • 'Alt+s' GUI mit Liste in den Vordergrund holen
    • 'Alt+e' Programm beenden

    Edit: Sry, noch einen Bug gefunden. Einblenden nur bei Änderungen hatte noch nicht geklappt.

    Hab jetzt noch eine Version angehängt, in der der Beitrag im Standardbrowser geöffnet wird.

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=AutoItNews
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstants.au3>
    #Include <GuiListView.au3>
    #include <IE.au3>
    #include <file.au3>
    Opt("GUIOnEventMode", 1)
    AutoitSetOption("WinTitleMatchMode", 2)

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

    Global Const $WM_NOTIFY = 0x004E
    Global Const $NM_FIRST = 0
    Global Const $NM_DBLCLK = ($NM_FIRST - 3)
    Global $ListView1

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

    Dim $oIE = _IECreate ( "http://www.autoit.de/portal.php",0,0,1,-1)
    Dim $oIEshowLast = _IECreate ( "http://www.autoit.de/portal.php",0,0,1,-1)
    Dim $oTable, $oLinks, $IEtitle = 'AutoIt Forum - Deutsch'
    Dim $aTableData, $aOldData[1][1], $time = @HOUR & ':' & @MIN, $timeRefresh, $news = 1
    Dim $aLinks[10], $arItem[20], $arTmp[20][7], $titel = "Letzte Forenbeiträge "
    Dim $WhiteSmoke = 0xF5F5F5, $LightGray = 0xD3D3D3, $Coral = 0xFF7F50

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

    HotKeySet("!e", "_Ende")
    HotKeySet("!s", "_ShowGUI")
    HotKeySet("!c", "_CloseIE")

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

    $Form1 = GUICreate($titel & $time, 727, 367, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    $ListView1 = GUICtrlCreateListView("Beitrag|Autor|Antworten/ Hits|Letzter", 16, 40, 694, 314)
    _GUICtrlListViewSetColumnWidth(-1,0,350)
    _GUICtrlListViewSetColumnWidth(-1,1,130)
    _GUICtrlListViewSetColumnWidth(-1,2,90)
    _GUICtrlListViewSetColumnWidth(-1,3,117)
    $cbIfNews = GUICtrlCreateCheckbox("Nur zeigen bei News", 16, 13, 130, 17)
    GUICtrlSetOnEvent(-1, "_IfNews")
    $cbOnlyNews = GUICtrlCreateCheckbox("Zeige nur News", 150, 13, 100, 17)
    GUICtrlSetOnEvent(-1, "_OnlyNews")
    GUICtrlCreateLabel("Aktualisierungs-Intervall in Sekunden:", 475, 13, 180, 17)
    $inTime = GUICtrlCreateInput(60, 660, 10, 50, 20, BitOR($ES_RIGHT, $ES_MULTILINE))

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

    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

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

    _show()
    $start = TimerInit()
    $begin = TimerInit()
    While 1
    If TimerDiff($begin) > $timeRefresh Then
    _IEAction($oIE, "refresh")
    _show()
    $begin = TimerInit()
    EndIf
    If TimerDiff($start) > 60000 Then
    $time = @HOUR & ':' & @MIN
    WinSetTitle($Form1, "", $titel & $time)
    $start = TimerInit()
    EndIf
    WEnd

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

    Func _Ende()
    Exit
    EndFunc

    Func AForm1Close()
    GUISetState(@SW_HIDE, $Form1)
    EndFunc

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

    Func _ShowGUI()
    GUISetState(@SW_SHOW, $Form1)
    EndFunc

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

    Func _IfNews()
    If (GUICtrlRead($cbOnlyNews) = 1) And (GUICtrlRead($cbIfNews) = 4) Then _
    GUICtrlSetState($cbOnlyNews, $GUI_UNCHECKED)
    EndFunc

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

    Func _OnlyNews()
    GUICtrlSetState($cbIfNews, $GUI_CHECKED)
    EndFunc

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

    Func _show()
    If _readData() = -1 Then
    _GUICtrlListViewDeleteAllItems($ListView1)
    _setData()
    $timeRefresh = GUICtrlRead($inTime)*1000
    If GUICtrlRead($cbIfNews) = 1 Then
    If $news > 0 Then GUISetState(@SW_SHOW, $Form1)
    Else
    GUISetState(@SW_SHOW, $Form1)
    EndIf
    EndIf
    EndFunc

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

    Func _readData()
    $news = 0
    $oLinks = _IELinkGetCollection ($oIE)
    _getLinks()
    $oTable = _IETableGetCollection ($oIE,17)
    $aTableData = _IETableWriteToArray ($oTable)
    If @error Then Return 0
    If UBound($aOldData) > 1 Then
    For $i = 1 To 10
    For $k = 1 To 10
    If $aOldData[2][$k] = $aTableData[2][$i] Then
    If $aOldData[6][$k] <> $aTableData[6][$i] Then
    $aTableData[0][$i] = 1 ; geänderter Eintrag
    $news += 1
    ExitLoop
    Else
    $aTableData[0][$i] = 2 ; unverändert
    EndIf
    EndIf
    Next
    Next
    For $i = 1 To 10
    If ($aTableData[0][$i] <> 1) Then
    If ($aTableData[0][$i] <> 2) Then
    $aTableData[0][$i] = 1 ; neuer Eintrag
    $news += 1
    EndIf
    EndIf
    Next
    EndIf
    $aOldData = $aTableData
    For $i = 1 To 10
    $aOldData[0][$i] = 0
    Next
    _Array2DMirror($aTableData)
    ReDim $arTmp[UBound($aTableData)-2][UBound($aTableData,2)]
    For $i = 1 To UBound($aTableData) -2
    For $k = 0 To UBound($aTableData,2)-1
    $arTmp[$i-1][$k] = $aTableData[$i][$k]
    Next
    Next
    $aTableData = $arTmp
    ReDim $arTmp[20][7]
    For $x = 1 To 6
    $k = 1
    If ($x = 2) Or ($x = 4) Or ($x = 6) Then
    For $i = 0 To 9
    $var = StringSplit($aTableData[$i][$x], @CRLF)
    $arTmp[$k-1][$x] = $var[1]
    $arTmp[$k][$x] = $var[3]
    $k += 2
    Next
    Else
    For $i = 0 To 9
    $arTmp[$k-1][$x] = $aTableData[$i][$x]
    $k += 2
    Next
    EndIf
    Next
    For $i = 0 To 18 Step 2
    $arTmp[$i+1][0] = $arTmp[$i][0]
    Next
    For $i = 0 To 9
    $k = 2*$i
    $arTmp[$k][1] = $aLinks[$i]
    $arTmp[$k+1][1] = $aLinks[$i]
    $arTmp[$k][0] = $aTableData[$i][0]
    $arTmp[$k+1][0] = $aTableData[$i][0]
    Next
    $aTableData = $arTmp
    Return -1
    EndFunc

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

    Func _getLinks()
    Local $i = 0, $k = 0
    ReDim $aLinks[10]
    For $oLink In $oLinks
    If StringInStr($oLink.href, '?goto=lastpost&threadid=',1) Then
    $aLinks[$i] = $k ; LinkIndex
    $i += 1
    EndIf
    $k += 1
    Next
    EndFunc

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

    Func _setData()
    Local $k = 0, $n = 0
    Select
    Case GUICtrlRead($cbOnlyNews) = 4
    ReDim $arItem[20]
    ReDim $aLinks[20]
    For $i = 0 To 19
    $k += 1
    If Mod($i, 2) = 0 Then
    $arItem[$i] = GUICtrlCreateListViewItem($aTableData[$i][2]&'|'&$aTableData[$i][4]&'|'&$aTableData[$i][3]& _
    ' / '&$aTableData[$i][5]&'|'&$aTableData[$i][6], $ListView1)
    Else
    $arItem[$i] = GUICtrlCreateListViewItem($aTableData[$i][2]&'|'&$aTableData[$i][4]&'|'&'|'&$aTableData[$i][6], $ListView1)
    EndIf
    If ($k = 1) Or ($k = 2) Then
    If ($aTableData[$i][0] = 1) And (Mod($k, 2) <> 0) Then
    GUICtrlSetBkColor($arItem[$i], $Coral)
    Else
    GUICtrlSetBkColor($arItem[$i], $WhiteSmoke)
    EndIf
    Else
    If $aTableData[$i][0] = 1 Then
    GUICtrlSetBkColor($arItem[$i], $Coral)
    Else
    GUICtrlSetBkColor($arItem[$i], $LightGray)
    EndIf
    EndIf
    If $k = 4 Then $k = 0
    $aLinks[$i] = $aTableData[$i][1]
    Next
    Case (GUICtrlRead($cbOnlyNews) = 1) And ($news > 0)
    ReDim $arItem[2*$news]
    ReDim $aLinks[2*$news]
    For $i = 0 To 19
    $k += 1
    If $aTableData[$i][0] = 1 Then
    If Mod($i, 2) = 0 Then
    $arItem[UBound($arItem)-1] = GUICtrlCreateListViewItem($aTableData[$i][2]&'|'&$aTableData[$i][4]&'|'&$aTableData[$i][3]& _
    ' / '&$aTableData[$i][5]&'|'&$aTableData[$i][6], $ListView1)
    Else
    $arItem[$i] = GUICtrlCreateListViewItem($aTableData[$i][2]&'|'&$aTableData[$i][4]&'|'&'|'&$aTableData[$i][6], $ListView1)
    EndIf
    If ($k = 1) Or ($k = 2) Then
    GUICtrlSetBkColor($arItem[$i], $WhiteSmoke)
    Else
    GUICtrlSetBkColor($arItem[$i], $LightGray)
    EndIf
    If $k = 4 Then $k = 0
    $aLinks[$n] = $aTableData[$i][1]
    $n += 1
    EndIf
    Next
    EndSelect
    EndFunc

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

    Func ListView_DoubleClick()
    $index = _GUICtrlListViewGetCurSel($ListView1)
    _IENavigate($oIEshowLast, "http://www.autoit.de/portal.php")
    If @error Then $oIEshowLast = _IECreate ( "http://www.autoit.de/portal.php",0,0,1,-1)
    _IELinkClickByIndex($oIEshowLast, $aLinks[$index])
    _IEAction($oIEshowLast, "visible")
    WinSetState($IEtitle, '', @SW_MAXIMIZE)
    EndFunc

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

    Func _CloseIE()
    _IEAction($oIEshowLast, "invisible")
    EndFunc

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

    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $ListView1
    Select
    Case $event = $NM_DBLCLK
    ListView_DoubleClick ()
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify_Events

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Function _Array2DMirror(ByRef $ARRAY)
    ;
    ; Description to mirror columns with rows in an 2D Array
    ;
    ; Parameter $ARRAY: 2D Array
    ;
    ; Return Succes -1 ByRef mirrored Array
    ; Failure 0 set @error
    ; @error = 1 given array is not array
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DMirror(ByRef $ARRAY)
    If ( Not IsArray($ARRAY) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($ARRAY,2)
    If @error = 2 Then
    SetError(2)
    Return 0
    EndIf
    Local $arTMP[$UBound2nd][UBound($ARRAY)]
    For $i = 0 To UBound($ARRAY) -1
    For $k = 0 To UBound($ARRAY,2) -1
    $arTMP[$k][$i] = $ARRAY[$i][$k]
    Next
    Next
    $ARRAY = $arTMP
    Return -1
    EndFunc ;==>_Array2DMirror

    [/autoit]

    Dateien

    Guckloch.au3 8,6 kB – 357 Downloads
  • Problem mit dem Zufall...

    • BugFix
    • 4. Juli 2007 um 01:09

    Also warum deins nicht ging?

    Ganz simpel:
    - in Zeile 8 fügst du den Wert zum Array hinzu: _ArrayAdd($pruefen, $Nummer1[$i])
    - in Zeile 9 prüfst du ob dieser Begriff im Array enthalten ist: _check($Nummer1[$i])

    Also - falsche Reihenfolge!
    Die Duplikatsprüfung muß vor der Zuweisung erfolgen.

  • _Array2DMirror

    • BugFix
    • 4. Juli 2007 um 00:50

    Die Funktion _Array2DMirror(ByRef $ARRAY) spiegelt Zeilen und Spalten gegeneinander.
    Aus einem Array[2][12] wird also ein Array[12][2].

    Spoiler anzeigen
    [autoit]

    ;----------------------------------------------------------------------------------------------------------------------
    ; Function _Array2DMirror(ByRef $ARRAY)
    ;
    ; Description to mirror columns with rows in an 2D Array
    ;
    ; Parameter $ARRAY: 2D Array
    ;
    ; Return Succes -1 ByRef mirrored Array
    ; Failure 0 set @error
    ; @error = 1 given array is not array
    ; @error = 2 array is not 2D
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DMirror(ByRef $ARRAY)
    If ( Not IsArray($ARRAY) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($ARRAY,2)
    If @error = 2 Then
    SetError(2)
    Return 0
    EndIf
    Local $arTMP[$UBound2nd][UBound($ARRAY)]
    For $i = 0 To UBound($ARRAY) -1
    For $k = 0 To UBound($ARRAY,2) -1
    $arTMP[$k][$i] = $ARRAY[$i][$k]
    Next
    Next
    $ARRAY = $arTMP
    Return -1
    EndFunc ;==>_Array2DMirror

    [/autoit]

    Dateien

    _Array2DMirror.au3 1,01 kB – 326 Downloads
  • Problem mit dem Zufall...

    • BugFix
    • 4. Juli 2007 um 00:25

    Hier mal ein funktionierendes Beispiel:

    [autoit]

    #include <array.au3>
    Dim $ar[5]=["otto","franz","paul","luise","anna"]

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

    MsgBox(0, '', _check("manfred") ) ; -1 da erfolg
    MsgBox(0, '', _check("luise") ) ; 0 da doppel
    MsgBox(0, '', _check("franz") ) ; 0 da doppel

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

    Func _Check($toSearch)
    If _ArraySearch($ar, $toSearch) = -1 Then
    _ArrayAdd($ar, $toSearch)
    Return -1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]
  • Brauche einen Script

    • BugFix
    • 3. Juli 2007 um 13:36

    *nu-noch-mit-dem-kopf-schüttel*

    Falls du es nicht bemerkt hast, dies hier ist ein Forum zur Skriptsprache AutoIt.
    Hier kann man sich austauschen, Skripte vorstellen und bekommt Hilfe, wenn man nicht weiter weiß.

    Du möchtest aber keine Hilfe, sondern ein fertiges Produkt.
    Dafür ist mir meine Zeit zu schade. Wir machen das hier aus Idealismus. Und da kann man schon ein gewisses Maß an eigener Aktivität verlangen.

    Geh doch mal zu Saturn oder Media Markt und sag: "Ich möchte kein Geld aufwänden - aber schiebt mir mal 'ne Festplatte rüber." :rofl:

    (Der Vergleich hinkt nicht!)

  • was macht eigendlich die neue Hilfe Version ?

    • BugFix
    • 2. Juli 2007 um 21:34

    Es ist schon etwas aufgeteilt, ich hatte den Block 'txtlibfunctions' gewählt.
    Zu viele Übersetzer (jeder 1 File oder so) würde nicht sehr sinnvoll sein.
    Naja, ich tue mein Bestes. ;)

    Edit:
    Stimmt, häufig reicht nur übersetzen nicht, da mußt du die Funktion erst ausprobieren um den Sinn zu verstehen. Englisch ist nicht unbedingt immer einfach.

  • was macht eigendlich die neue Hilfe Version ?

    • BugFix
    • 2. Juli 2007 um 21:07

    Mühsam nährt sich das Eichhörnchen....

    Ich arbeite immer wieder mal dran. Aber wenn man es gründlich machen will, ist es doch recht zeitintensiv.
    Habe bisher 93 von 343 Files übersetzt.

  • SciTE: Schlüsselwörter für Abkürzungen

    • BugFix
    • 2. Juli 2007 um 20:56

    lol

    kam ein NochBesserWisser daher und sagte:
    Ganz eigentlich heisst es wohl "Back to the roots". :rofl:

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™