Hallo All!
weiß, es ist peinlich, mach echt viel mit Autoit, aber meine Programme laufen auf irgendeinem Server ohne Menü und Oberfläche und werden zu 99% von einem bestimmten Produkt aufgerufen (dessen Menüoberfläche ich dann benutzen muss).
habe versucht ein tail Kommando zu schreiben (für alle Nicht-Unixler) der schaut in ne Datei uns spuckt mit der option -f normalerweise die letzten 20 Zeilen permanent aus (das ist sinnvoll wenn ich mir das Protokoll eines Jobs anschauen will, der stundenlang läuft ich ich mitschauen will, wo ist der gerade.
Das wollte ich jetzt mit Autoit und Windows-Optik realisieren.
Autoit-Code ist anbei (einer meiner ersten Versuche mit Oberfläche), das Protokoll unterstelle ich in c:\protokoll, nur heute ist mir das Teil auf einem Produktionsserver 2mal abgeschmiert, bzw. VNC hat nicht mehr gewollt und ich konnte nicht mehr weiterarbeiten.
Kann da mal ein Experte draufschauen, hab ich da einen haarsträubenden Fehler drin???
Wie bringt mann den Spoiler rein??
Gartenzaun und Text Spoiler oder sowas??
Spoiler anzeigen
; WINTAIL.AU3
#include <Date.au3>
#include <string.au3>
#include <file.au3>
#include <array.au3>
#include <GUIConstants.au3>
$Version="1.00"
$message = "Wähle eine Protokoll-Datei" & $VERSION
$grepfile = FileOpenDialog($message, "C:\protokoll\", "LOGs (*.log;*.txt;*.prt;*.prot)| Alle Dateien (*.*)", 1 + 2 )
If @error Then
MsgBox(4096,"","Keine Datei ausgewählt")
exit
Else
$tailfile = StringReplace($grepfile, "|", @CRLF)
EndIf
Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
$mainwindow = GUICreate("Wintail " & $Version & " " & $tailfile, 600, 150)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$line=_tail($tailfile)
GUICtrlCreateEdit ($line, 5,5,590,140,$WS_HSCROLL)
;$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)
; GUICtrlSetOnEvent($okbutton, "OKButton")
GUISetState(@SW_SHOW)
While 1
Sleep(2500) ; Häng rum
;$Zeit=@HOUR & ":" & @MIN & ":" & @SEC
$line=_tail($tailfile)
GUICtrlCreateEdit ($line, 5,5,590,140,$WS_HSCROLL)
WEnd
Func CLOSEClicked()
;Beachte: an diesem Punkt wäre @GUI_CTRLID gleich $GUI_EVENT_CLOSE,
;und @GUI_WINHANDLE wäre gleich $mainwindow
MsgBox(0, "GUI Event", "Du hast auf CLOSE geklickt! Programm wird beendet...",1)
Exit
EndFunc
Func _tail($PROT)
[/autoit] [autoit][/autoit] [autoit]$gelzeilen=_filecountlines($PROT)
; msgbox(0,"gelesene Zeilen", $gelzeilen)
$lesezeile=10
$startzeile=$gelzeilen - $lesezeile
; einlesen in ein Array
[/autoit] [autoit][/autoit] [autoit]$tailtext=''
Dim $aRecords
$l=0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If Not _FileReadToArray($PROT,$aRecords) Then
; MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
For $x = 1 to $aRecords[0]
if $x >= $startzeile then
$tailtext=$tailtext & @CRLF & $aRecords[$x]
EndIf
; Msgbox(0,'Record:' & $x, $aRecords[$x],2)
Next
[/autoit] [autoit][/autoit] [autoit]Return($tailtext)
; msgbox(0,"nachricht ist", $tailtext)
EndFunc
[/autoit] Edit GtaSpider: [04.10.2007 21:08]
Spoiler und AutoIt Tags eingefügt
Aufruf: