Siechfred: aktuelle farben des terminals eruieren

Beitrag lesen

weiss jetzt noch jemand, wie man die aktuellen farben der console eruiert?

So 'funzt' das zumindest unter Win2k:

use strict;  
use diagnostics;  
use Win32::Console;  
  
# Farbcodes, siehe in der Hilfe  
# zu Windows zum color-Befehl  
my %colors = ( '0' => 'Schwarz',  
               '1' => 'Dunkelblau',  
               '2' => 'Dunkelgruen',  
               '3' => 'Blaugruen',  
               '4' => 'Dunkelrot',  
               '5' => 'Violett',  
               '6' => 'Ocker',  
               '7' => 'Hellgrau',  
               '8' => 'Dunkelgrau',  
               '9' => 'Blau',  
               'A' => 'Gruen',  
               'B' => 'Zyan',  
               'C' => 'Rot',  
               'D' => 'Magenta',  
               'E' => 'Gelb',  
               'F' => 'Weiss'  
             );  
  
my $console = Win32::Console->new;  
my $default_dec = ($console->Info())[4];  
my $default_hex = sprintf "%02X", $default_dec;  
my @color = split //, $default_hex;  
print $colors{$color[1]}, ' auf ', $colors{$color[0]};

Das eklige dabei ist, dass als Attributwert eine Dezimalzahl geliefert wird, die du erst noch nach hexadezimal umwandeln musst, bevor du die Hexwerte mit dem Farb-Hash abgleichen kannst. Und richtig nervig ist, dass schwarzer Hintergrund Standard ist und somit als Farbwert regelmäßig unterschlagen wird.

Siechfred

--
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.