Kan man med en kod kolla hur länge datorn har varit inaktiv?
------------------
^FreeZer^
------------------
"Om du läser denna mening en gång till, kommer du att ha läst den minst två gånger..."
8 svar · 460 visningar · startad av FreeZer
Kan man med en kod kolla hur länge datorn har varit inaktiv?
------------------
^FreeZer^
------------------
"Om du läser denna mening en gång till, kommer du att ha läst den minst två gånger..."
Ok, hur ska jag skriva då om jag vill känna av när senste knapptryckningen var, eller när musen rörde på sig senast?
------------------
^FreeZer^
------------------
"Om du läser denna mening en gång till, kommer du att ha läst den minst två gånger..."
Jag vet inte hur men du kan ju kolla på lite delphi sidor...
------------------
--> Fan för snö!!!
Mouse och keyboard hooks borde göra susen...
// Global variables
var
whKeyboard: HHook = 0;
whMouse: HHook = 0;
// ***********************************************************************************************
// Mouse and Keyboard hooks resets the timer counting user inactivity
// ***********************************************************************************************
function MouseHookCallBack(Code: Integer; Msg: WPARAM; MouseHook: LPARAM): LRESULT; stdcall;
begin
if (Code >= 0) then
Timer.Reset;
Result := CallNextHookEx(whMouse, Code, Msg, MouseHook);
end;
function KeyboardHookCallBack(Code: integer; Msg: WPARAM; KeyboardHook: LPARAM): LRESULT; stdcall;
begin
if (Code >= 0) then
Timer.Reset;
Result := CallNextHookEx(whKeyboard, Code, Msg, KeyboardHook);
end;
// ***********************************************************************************************
// Set up hooks. Called from GlobalInit.
// ***********************************************************************************************
procedure SetUpHooks;
function GetModuleHandleFromInstance: THandle;
var
s: array[0..512] of Char;
begin
GetModuleFileName(hInstance, s, sizeof(s) - 1);
Result := GetModuleHandle(s);
end;
begin
whMouse := SetWindowsHookEx(
WH_MOUSE,
MouseHookCallBack,
GetModuleHandleFromInstance,
GetCurrentThreadID);
whKeyboard := SetWindowsHookEx(
WH_KEYBOARD,
KeyboardHookCallBack,
GetModuleHandleFromInstance,
GetCurrentThreadID);
end;
Glöm inte att släppa hookarna vid program avslut...
// Release hooks
UnhookWindowsHookEx(whKeyboard);
UnhookWindowsHookEx(whMouse);
------------------
winer.nu
Kan du förklara dig lite närmare?
Menar du just ditt program eller operativet som sådant?
Som vanligt fler frågor än svar!!!
------------------
GvdsSfdtTddv.
WiNNe: Jag får inte koden att fungera alls, har du nån sida där du hittat den som jag kan få kolla på?
Lasp: Jag skrev i första inlägget att "kolla hur länge datorn har varit inaktiv", då tänkte jag på operativsystemet om det inte fram kom.
Alltså på samma sätt som skärmsläckaren går igång, att man inte rört någonting.
------------------
^FreeZer^
------------------
"Om du läser denna mening en gång till, kommer du att ha läst den minst två gånger..."
FreeZer prova att söka efter en sida själv tex http://www.codehound.com/
keyboard Hook: http://www.codehound.com/delphi/results/results.asp?S=1&Q=Keyboard+Hook
mouse hook: http://www.codehound.com/delphi/results/results.asp?S=1&Q=mouse+hook+
Kanske borde skrivit att jag inte testat ovanstående fristående, jag klippte det från ett av mina gammla program. Möjligt att där är nåt anrop som saknar referens eller liknande. Men det borde ge räcka för att hjälpa till att hitta en bra lösning. Om man får allt gjort av andra lär man ju sig inget... :)
------------------
winer.nu