Greetings Monks,

Here's a cool little program that demonstrates the power of perl and Win32::GUI. In just 7 lines, this progam will poll the 24-bit color of the pixel under the cursor. Enjoy.

TROGDOR
use Win32::GUI; $screen = new Win32::GUI::DC("DISPLAY"); while(1) { ($x,$y) = Win32::GUI::GetCursorPos(); $color = $screen->GetPixel($x,$y); printf ("%06X\n", $color); sleep 1; }

Replies are listed 'Best First'.
Re: The power of Perl and Win32::GUI
by holli (Abbot) on Jul 30, 2005 at 09:28 UTC
    Avoid repeated output when mouse stays over a colour:
    use Win32::GUI; $screen = new Win32::GUI::DC("DISPLAY"); while(1) { ($x,$y) = Win32::GUI::GetCursorPos(); $color = $screen->GetPixel($x,$y); next if $color eq $last; $last = $color; printf ("%06X\n", $color); sleep 1; }


    holli, /regexed monk/
      On my PC, I save 50% CPU (1 % vs 52%) if I move the "sleep 1" as the first statement in the "while(1){" loop, with very minimal(un-noticable for practical purposes) loss in responsiveness.

           "Income tax returns are the most imaginative fiction being written today." -- Herman Wouk

Re: The power of Perl and Win32::GUI
by davidrw (Prior) on Jul 31, 2005 at 15:18 UTC
    cool. /me adds to personal snippets pile.
    Limited to the firefox window, but the ColorZilla plugin is also very handy.
Re: The power of Perl and Win32::GUI
by sintadil (Pilgrim) on Aug 04, 2005 at 01:30 UTC

    Yum. I'll need to start absorbing all the Win32 knowledge I can for my job (can't give you a Web URL since they don't really have one. Huzzah, I get to set up Apache / IIS!).

    Psst ... don't tell them that they're paying me to have fun, okay? :)

Re: The power of Perl and Win32::GUI
by Anonymous Monk on Feb 10, 2011 at 11:47 UTC

    Sometimes it is needed this program for color interpretation.

    Always i get an error in interpreting color. I'm change the label color ex: "red" color code,

    but program not display "red" color ex. display "blue" color !!!

    This is best solution.There is my advenced code;

    # Author : KuNdUz # 10.02.2011 - 13:35 use strict; use warnings; use Win32::GUI; use Number::RGB; my $Win = new Win32::GUI::Window( -left => 341, -top => 218, -width => 300, -height => 131, -name => "Win", -text => "->GetPixel Advanced" ); $Win->Show(); my $font = new Win32::GUI::Font( -bold => 1, -size => 18, ); $Win->AddLabel( -name => "Label_1", -left => 0, -top => 0, -width => 300, -font => $font, -height => 130, ); my $screen = new Win32::GUI::DC("DISPLAY"); my $timdre1 = $Win->AddTimer('tim',100); sub tim_Timer { my ($x,$y) = Win32::GUI::GetCursorPos(); my $color = $screen->GetPixel($x,$y); my $kaka = sprintf ("%06X\n", $color); # print "html : $kaka\n"; my $green = Number::RGB->new(hex => '#'.$kaka); # print "rgb : $green\n"; my $last = $color; if($color eq $last){} $green =~ /(.+),(.+),(.+)/; $Win->Label_1->Change(-text => "Html Hex : $kaka\nRGB Hex : $green", - +background => [$1,$2,$3]); } Win32::GUI::Dialog(); sub Win_Terminate { return -1; } 1; 1; # Author : KuNdUz