Ich hab ein kleines Script gebastelt dass die Windowsoberfläche pixelweise ausliest und dann im ASCII-Format mit Farbe als HTML-Datei schreibt.
Ist schwer zu erklären aber startet das script einfach mal und klickt direkt auf OK ohne Daten einzugeben...
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.2.9.3 (beta)
Author: Health
Script Function:
Read & write pixels.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstants.au3>
#include <Color.au3>
; ---------- Functions
Func Draw($Width = 50, $Height = 50, $Left = 0, $Top = 0, $Filter = "no filter")
$Timer = TimerInit()
Dim $Color[$Width + 1][$Height + 1]
; read pixels
ProgressOn("reading pixels in " & $Width & "x" & $Height & " at " & $Left & "x" & $Top, "", "", @DesktopWidth - 350, @DesktopHeight - 175)
For $ix = $Left To $Width + $Left
$Pro = Round(100 / $Width * ($ix - $Left))
ProgressSet($Pro, $Pro & "% done")
For $iy = $Top To $Height + $Top
$Color[$ix - $Left][$iy - $Top] = PixelGetColor($ix, $iy)
Next
Next
ProgressOff()
; draw pixels
ProgressOn($Width * $Height & " pixels drawing...", "", "", @DesktopWidth - 350, @DesktopHeight - 175)
; ---------------------------
$Font = "'Lucida Console'"
$FontSize = 1 ; pixels
$Char = "." ; dot is the best char for this
$String = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"' & @CRLF
$String &= ' "http://www.w3.org/TR/html4/loose.dtd">' & @CRLF
$String &= '<html>' & @CRLF
$String &= '<head>' & @CRLF
$String &= '<meta http-equiv="content-type" content="text/html; charset=utf-8">' & @CRLF
$String &= '<title>Graphic</title>' & @CRLF
$String &= '</head>' & @CRLF
$String &= '<body style="font-family:' & $Font & ';text-align:center">' & @CRLF
$String &= '<p style="font-size:' & $FontSize & 'px;line-height:' & $FontSize & 'px">' & @CRLF
For $iy = 0 To $Height
$Pro = Round(100 / $Height * $iy)
ProgressSet($Pro, $Pro & "% done")
For $ix = 0 To $Width
$DrawColor = "0x" & Hex($Color[$ix][$iy], 6) ; original color
Switch $Filter
Case "red"
$DrawColor = "" & Hex(_ColorGetRed($DrawColor), 2) & "0000"
Case "green"
$DrawColor = "00" & Hex(_ColorGetGreen($DrawColor), 2) & "00"
Case "blue"
$DrawColor = "0000" & Hex(_ColorGetBlue($DrawColor), 2)
Case "black/white"
$Red = _ColorGetRed($DrawColor)
$Green = _ColorGetGreen($DrawColor)
$Blue = _ColorGetBlue($DrawColor)
$Temp = ($Red + $Green + $Blue) / 3
$DrawColor = Hex($Temp, 2) & Hex($Temp, 2) & Hex($Temp, 2)
Case Else
$DrawColor = Hex($Color[$ix][$iy], 6)
EndSwitch
$String &= '<u style="color:#' & $DrawColor & '">' & $Char & '</u>'
Next
$String &= '<br>' & @CRLF
Next
ProgressOff()
$String &= '</p>' & @CRLF
$String &= '<p style="font-size:10pt">generated in ' & Round(TimerDiff($Timer) / 1000, 3) & ' seconds<br>' & @CRLF
$String &= $Width * $Height & ' chars, ' & @MDAY & "." & @MON & "." & StringRight(@YEAR, 2) & " - " & @HOUR & ":" & @MIN & ":" & @SEC & '</p>' & @CRLF
$String &= '</body>' & @CRLF
$String &= '</html>'
FileWrite(@MDAY & "." & @MON & "." & StringRight(@YEAR, 2) & "-" & @HOUR & "." & @MIN & "." & @SEC & ".html", $String)
MsgBox(-1, "Graphic", "Pixels writing in HTML done!")
Exit
EndFunc
; ---------- GUI
$settings = GuiCreate("settings", 370, 220)
GuiCtrlCreateGroup("size and position", 10, 10, 190, 160)
$Width = GuiCtrlCreateInput("", 80, 40, 50, 20, $ES_NUMBER)
GUICtrlSetLimit(-1, 3)
$Height = GuiCtrlCreateInput("", 80, 70, 50, 20, $ES_NUMBER)
GUICtrlSetLimit(-1, 3)
$Left = GuiCtrlCreateInput("", 80, 100, 50, 20, $ES_NUMBER)
GUICtrlSetLimit(-1, 3)
$Top = GuiCtrlCreateInput("", 80, 130, 50, 20, $ES_NUMBER)
GUICtrlSetLimit(-1, 3)
GuiCtrlCreateLabel("width:", 30, 43, 40, 20)
GuiCtrlCreateLabel("height:", 30, 73, 40, 20)
GuiCtrlCreateLabel("left:", 30, 103, 40, 20)
GuiCtrlCreateLabel("top:", 30, 133, 40, 20)
GuiCtrlCreateLabel("pixels", 140, 43, 40, 20)
GuiCtrlCreateLabel("pixels", 140, 73, 40, 20)
GuiCtrlCreateLabel("pixels", 140, 103, 40, 20)
GuiCtrlCreateLabel("pixels", 140, 133, 40, 20)
GuiCtrlCreateGroup("filters", 210, 10, 150, 160)
$Radio_1 = GuiCtrlCreateRadio("red filter", 230, 40, 110, 20)
$Radio_2 = GuiCtrlCreateRadio("green filter", 230, 70, 110, 20)
$Radio_3 = GuiCtrlCreateRadio("blue filter", 230, 100, 110, 20)
$Radio_4 = GuiCtrlCreateRadio("black/white filter", 230, 130, 110, 20)
$OK = GuiCtrlCreateButton("OK", 10, 180, 170, 30)
GUICtrlSetState(-1, $GUI_DEFBUTTON) ; default button
$Cancel = GuiCtrlCreateButton("Cancel", 190, 180, 170, 30)
GuiSetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; ---------- While
While 1
Switch GuiGetMsg()
Case $OK
$Width = GUICtrlRead($Width)
If $Width = "" Or $Width <= 0 Then $Width = 50
$Height = GUICtrlRead($Height)
If $Height = "" Or $Height <= 0 Then $Height = 50
$Left = GUICtrlRead($Left)
If $Left = "" Then $Left = 0
$Top = GUICtrlRead($Top)
If $Top = "" Then $Top = 0
$Filter = ""
If GUICtrlRead($Radio_1) = $GUI_CHECKED Then $Filter = "red"
If GUICtrlRead($Radio_2) = $GUI_CHECKED Then $Filter = "green"
If GUICtrlRead($Radio_3) = $GUI_CHECKED Then $Filter = "blue"
If GUICtrlRead($Radio_4) = $GUI_CHECKED Then $Filter = "black/white"
GUIDelete($settings)
Draw($Width, $Height, $Left, $Top, $Filter)
Case $Cancel
Exit
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;
; ---
;
Viel Spaß :comp1: