procedure TForm1.Timer1Timer(Sender: TObject); var vLastInputInfo: TLastInputInfo; begin vLastInputInfo.cbSize := SizeOf(vLastInputInfo); GetLastInputInfo(vLastInputInfo); if GetTickCount - vLastInputInfo.dwTime > 5000 then begin timer1.Enabled:= false; showmessage('超过5秒,用户未动鼠标!'); end; end;尝试用这个
procedure TForm1.Timer1Timer(Sender: TObject); var vLastInputInfo: TLastInputInfo; begin vLastInputInfo.cbSize := SizeOf(vLastInputInfo); GetLastInputInfo(vLastInputInfo); if GetTickCount - vLastInputInfo.dwTime > 5000 then begin timer1.Enabled:= false; showmessage('超过5秒,用户未动鼠标!');//这声明一个 变量 end; end; 在通过消息捕获键盘鼠标事件
var idleTime:double ;//我的最短procedure TForm1.FormCreate(Sender: TObject); begin idleTime:=now ;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if now - idleTime > 60*1000 then//1 min begin //doyourpress end; idleTime := now;end;
var idleTime:double ; //我的较简易 procedure TForm1.FormCreate(Sender: TObject); begin idleTime:=now ; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if now - idleTime > 60*1000 then//1 min begin //doyourpress end; idleTime := now; end;
var
vLastInputInfo: TLastInputInfo;
begin
vLastInputInfo.cbSize := SizeOf(vLastInputInfo);
GetLastInputInfo(vLastInputInfo);
if GetTickCount - vLastInputInfo.dwTime > 5000 then
begin
timer1.Enabled:= false;
showmessage('超过5秒,用户未动鼠标!');
end;
end;尝试用这个
用一个timer 控件,用循环来递增计数器。当计数器到达某个数时,弹出登陆窗。
当鼠标移动时,键盘按下时,计数器清零。
if UpperCase (Config.AutoLock) = 'YES' then Hook;
procedure TfrmMain.TimerTimer(Sender: TObject);
var
dwCount: DWORD;
begin
if UpperCase (Config.AutoLock) = 'YES' then
begin
dwCount := GetTickCount;
if dwCount >= dwLastInputTick then
dwCount := dwCount - dwLastInputTick
else
dwCount := MAXDWORD - dwLastInputTick + dwCount;
if dwCount div 1000 > DWORD(Config.LockTime) then
begin
dwLastInputTick := GetTickCount;
acLock.Execute;//执行锁定,弹出输入密码窗体
end;
end;end;//做的复杂点的话,可以使用键盘鼠标钩子
procedure TfrmMain.Hook;
begin
hHookKbd := SetWindowsHookEx(WH_KEYBOARD, MyKbdHook, HInstance, GetCurrentThreadId);
hHookMouse := SetWindowsHookEx(WH_MOUSE, MyMouseHook, HInstance, GetCurrentThreadId);
dwLastInputTick := GetTickCount;
Timer.Enabled := True;
end;procedure TfrmMain.UnHook;
begin
Timer.Enabled := False;
if hHookKbd <> 0 then
UnhookWindowsHookEx(hHookKbd);
if hHookMouse <> 0 then
UnhookWindowsHookEx(hHookMouse);
hHookKbd := 0;
hHookMouse := 0;
end;
var
vLastInputInfo: TLastInputInfo;
begin
vLastInputInfo.cbSize := SizeOf(vLastInputInfo);
GetLastInputInfo(vLastInputInfo);
if GetTickCount - vLastInputInfo.dwTime > 5000 then
begin
timer1.Enabled:= false;
showmessage('超过5秒,用户未动鼠标!');//这声明一个 变量
end;
end;
在通过消息捕获键盘鼠标事件
begin
idleTime:=now ;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if now - idleTime > 60*1000 then//1 min
begin
//doyourpress
end; idleTime := now;end;
begin
idleTime:=now ; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if now - idleTime > 60*1000 then//1 min
begin
//doyourpress
end; idleTime := now; end;