Desktop-Text, der immer oben ist und regelmäßig aus einer Datei geladen wird

1

Ich möchte, dass benutzerdefinierter Text auf meinem Bildschirm immer im Vordergrund angezeigt wird. Ich habe die Rainmeter-Software ausprobiert und konnte keine Option zum Laden von Text aus einer Datei auf meinem System oder auf andere Weise finden.

Was ich haben möchte, ist Software, die auf allen Fenstern druckt und Akte alle Sekunden scannt, um späteste Änderungen zu drucken.

P.S. Die Idee wäre, mein Live-PHP-Website-Fehlerprotokoll jede Sekunde oder wenn neue Einträge erscheinen auf meinem Bildschirm zu drucken.

Petja
quelle
Welches Betriebssystem? Windows XP / Vista / 7?
iglvzx
Es spielt keine Rolle, ich habe XP und 7 installiert und kann bei Bedarf installieren.
Petja

Antworten:

0

Ich habe es geschafft, dies zum Laufen zu bringen, aber Sie müssen möglicherweise mit der Transparenz / Schriftgröße / Hintergrundfarbe spielen, um es zu bekommen, damit es einfach zu lesen ist.

Sie müssen installieren AutoHotKey und führe dieses Skript aus: https://www.dropbox.com/s/x510z8tsxunardl/OSDTest.ahk

Es gibt einige Kommentare im Code, aber in Kürze wird es: 5 Zeilen vom Ende der angegebenen Protokolldatei lesen; Erstellen Sie ein Fenster und fügen Sie dieses als Text in das Fenster ein. Machen Sie das Fenster transparent, immer im Vordergrund und "nicht klickbar". und aktualisieren Sie den Text alle 1 Sekunden (möglicherweise müssen Sie dies erhöhen, aber ich sehe keinen großen Leistungseinbruch - auch mit einer 20-MB-Protokolldatei).

Um das Skript zu beenden, klicken Sie mit der rechten Maustaste auf das AutoHotKey-Symbol in der Taskleiste und wählen Sie Beenden.

Wenn meine Links kaputt sind, folgt der AHK-Code:

#SingleInstance force
; Example: On-screen display (OSD) via transparent window:
FileName := "C:\xampplite\apache\logs\access.log"
NumLines = 5
CustomColor = FF8080 ; The transparent background color of the window, set this to something close to your text colour to avoid white highlighting

Gui +LastFound +AlwaysOnTop -Caption +ToolWindow +E0x20  ; +ToolWindow avoids a taskbar button and an alt-tab menu item.
Gui, Color, %CustomColor%
Gui, Font, s12  ; Set a large font size (12-point).
errorTail := FileTail(FileName , NumLines) ; get the text from the file, last 5 lines
Gui, Add, Text, vMyText cRed Y+0, %errorTail%  ; add it, colour is Red, R5 sets 5 rows

; choose one of these lines, first one show just the text, second one has a background for readability
WinSet, TransColor, %CustomColor% 200 ; Make all pixels of this color transparent and make the text itself translucent (250)
;Winset, Transparent, 150

SetTimer, UpdateOSD, 1000 ; 1 second timer set here
Gui, Show, x0 y600 NoActivate  ; Set the x and y position. NoActivate avoids deactivating the currently active window.
return

UpdateOSD: ; the repeated timer routine
errorTail := FileTail(FileName, NumLines) ;get 5 lines
GuiControl,, MyText, %errorTail%
return

; ======================================================================================================================
; Function:    Retrieve the last lines of a text file.
; AHK version:  1.1.07+
; Parameters:
;    FileName -  the name of the file, assumed to be in A_WorkingDir if an absolute path isn't specified
;    Lines  -  number of lines to read - default: 10 (like Unix)
;    NewLine  -  new line character(s)   - default: `r`n (Windows)
; Return values:
;    On success: The required lines, if present
;    On failure: ""
; Version:      1.0.00.00/2012-04-16/just me
; ======================================================================================================================
FileTail(FileName, Lines = 10, NewLine = "`r`n") {
   Static MaxLineLength := 256 ; seems to be reasonable to start with
   If !IsObject(File := FileOpen(FileName, "r"))
      Return ""
   Content := ""
   LinesLength := MaxLineLength * Lines * (InStr(File.Encoding, "UTF-16") ? 2 : 1)
   FileLength := File.Length
   BytesToRead := 0
   FoundLines := 0
   While (BytesToRead < FileLength) && !(FoundLines) {
      BytesToRead += LinesLength
      If (BytesToRead < FileLength)
         File.Pos := FileLength - BytesToRead
      Else
         File.Pos := 0
      Content := RTrim(File.Read(), "`r`n")
      If (FoundLines := InStr(Content, NewLine, 0, 0, Lines))
         Content := SubStr(Content, FoundLines + StrLen(NewLine))
   }
   File.Close()
   Return Content
}
Luke
quelle