in reply to Win32 idle state (screensaver like)

It has limitations, but GetLastInputInfo() may give you what you need.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."
  • Comment on Re: Win32 idle state (screensaver like)

Replies are listed 'Best First'.
Re^2: Win32 idle state (screensaver like)
by thenetfreaker (Friar) on Sep 28, 2007 at 21:05 UTC
    Wonderful, now how do i combine it with perl ?
    though it's told there that it's also C++'s function i've never seen it in C++ neither in C# and most important, i don't know how to get it to return the output into a Perl's variable.

      You learn how to use Win32::API

      This uses win32::API::Prototype which you may not be able to obtain, but shoudl be readily adaptable to Win32::API. It loops, calling the api and printing the return. Move the mouse or touch a key to see the output change.

      #! perl -slw use strict; use Win32::API::Prototype; ApiLink( 'user32.dll', 'bool GetLastInputInfo( pvoid p )' ) or die $^E +; my $info = pack 'VV', 8, 0; while( sleep 1 ) { GetLastInputInfo( $info ) or die $^E; printf "Last input was at: %u\n", unpack 'x[V] V', $info; } __END__ c:\test>junk Last input was at: 850068125 Last input was at: 850068125 Last input was at: 850068125 Last input was at: 850068125 Last input was at: 850068125 Last input was at: 850073953 Last input was at: 850073953 Last input was at: 850073953 Last input was at: 850073953 Last input was at: 850077828 Last input was at: 850078250 Last input was at: 850078250 Last input was at: 850078250 Last input was at: 850078250 Last input was at: 850078250 Last input was at: 850078250 Last input was at: 850078250 Last input was at: 850078250 Last input was at: 850086593 Last input was at: 850086593 Last input was at: 850086593 Last input was at: 850086593 Last input was at: 850090578 Last input was at: 850092078 Last input was at: 850092703 Terminating on signal SIGINT(2)

      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        Thanks a lot, i'm VVery grateful :)

        use Win32::API::Prototype; ApiLink( 'user32.dll', 'bool GetLastInputInfo( pvoid p )' )
        can be replaced with
        use Win32::API; Win32::API::->Import('user32.dll', 'BOOL GetLastInputInfo(PVOID p)')
        removing the dependency of Win32::API::Prototype. Win32::API has its own prototype parser. (I guess Win32::API::Prototype predates the Import method in Win32::API.)

        lodin