HDC GetDC(
HWND hWnd // handle to window
);
####
#!/usr/bin/perl
use strict;
use warnings;
use Win32::API;
Win32::API::Struct->typedef( POINT => qw(
LONG x;
LONG y;
) );
Win32::API->Import( 'user32' => 'BOOL GetCursorPos(LPPOINT pt)' );
Win32::API->Import( 'user32' => 'long GetDC(long hWnd)' );
Win32::API->Import( 'gdi32' => 'long GetPixel(long hWnd, long x, long y)' );
Win32::API->Import( 'user32' => 'long ReleaseDC(long hWnd, long hDC)' );
sub PixelColor {
# if $hwnd is null or '', act on the entire screen
my ($hwnd, $x, $y) = @_;
my $dc = GetDC($hwnd);
my $rgb = GetPixel($dc, $x, $y);
ReleaseDC($hwnd, $dc);
return $rgb < 0 ? undef: sprintf "%06x", $rgb;
}
my $pt = Win32::API::Struct->new( 'POINT' );
while (1) {
GetCursorPos($pt) or die "GetCursorPos failed: $^E";
print "Cursor is at: $pt->{x}, $pt->{y}\n";
print "The pixel color is: ", PixelColor('',$pt->{x}, $pt->{y}), "\n";
sleep(2);
}