use strict;
use Win32::API;
use constant HORZRES => 8;
use constant VERTRES => 10;
use constant BITSPIXEL => 12;
use constant VREFRESH => 116;
Win32::API->Import("gdi32", "CreateDC", ['P', 'P', 'P', 'P'], 'N',)
or die "Can't import the CreateDC API:\n$!\n";
Win32::API->Import("gdi32", "GetDeviceCaps", ['N', 'N'], 'N',)
or die "Can't import the GetDeviceCaps API:\n$!\n";
Win32::API->Import("gdi32", "DeleteDC", ['N'], 'V',)
or die "Can't import the DeleteDC API:\n$!\n";
my $hdc = CreateDC("DISPLAY", 0, 0, 0);
if (!$hdc) {
die "ERROR: can't open display!\n";
}
my %colors = (
8 => "256 Color",
16 => "High Color",
24 => "True Color",
32 => "True Color",
);
my $X = GetDeviceCaps($hdc, HORZRES);
my $Y = GetDeviceCaps($hdc, VERTRES);
my $BPP = GetDeviceCaps($hdc, BITSPIXEL);
my $HZ = GetDeviceCaps($hdc, VREFRESH);
print "${X}x$Y $colors{$BPP} ($BPP Bit)\n";
DeleteDC($hdc);