#!perl.exe #------------------------------------------------------------------------------ select STDOUT; $|=1; sub sleep_a_little() { # On Win64 ActivePerl, sleeping span must be an integer sleep 1; } #------------------------------------------------------------------------------ use Win32::Registry; my $reg = $HKEY_CURRENT_USER; my $key = 'Software\Hidemaruo\Hidemaru\Default'; my $item; $reg->Open($key, $item) or die $^E; #------------------------------------------------------------------------------ system "title Now Monitoring HIDEMARU's Default ColorSet[]."; my $type, $value, $count=0; my @curr=(), @prev=(); while ( 1 ) { $item->QueryValueEx('Colorset', $type, $value) or die $^E; $type==3 or die "Data type isn't REG_BINARY!\n"; length($value)==780 or die "Data size isn't 780 bytes!\n"; @curr = unpack('V*', $value); if ( $#prev<0 ) { @prev = @curr; next; } my $changes='', $i; for ( $i=0 ; $i<=$#curr ; $i++) { if ( $prev[$i] != $curr[$i] ) { $changes .= sprintf( "ColorSet[%d]: 0x%06X -> 0x%06X\n", $i, $prev[$i], $curr[$i] ); } } if ( $changes ne '' ) { print '--------', scalar localtime, "--------\n"; print $changes; print "\n"; @prev = @curr; } $count++; print '.'; if ( $count >= 50 ) { print "\r". (" " x 50 ) . "\r"; $count = 0; } &sleep_a_little(); } # never comes... $reg->Close(); exit 0;