in reply to Re: Detect if Windows screensaver is running or screen is locked (Lock Computer)
in thread Detect if Windows screensaver is running or screen is locked (Lock Computer)

my $GetTickCo­unt = Win32::API­->new("ker­nel32.dll"­,'GetTickC­ount', +'','­I');

It is a lot easier to just use:

my $now= Win32::GetTickCount();

which is just built-in to Win32 perls.

Note that tick counts wrap, so you need to have your math wrap and, if the user has been idle for 50 days, they will appear not idle again.

If you are sure that your Perl isn't built to use 64-bit integers, then you can get the math to wrap with:

my $ticks= do { use integer; Win32::GetTickCount() - $time };

but that will show the user as not being idle for another 25 days into the future once they've been idle for 25 days.

Better is probably something like:

my $ticks= Win32::GetTickCount() - $time; $ticks += ~0 if $ticks < 0;

Or replace ~0 with 0xffffffff if you might have a 64-bit version of Perl.

- tye        

  • Comment on Re^2: Detect if Windows screensaver is running or screen is locked (Lock Computer) (wrap)
  • Select or Download Code