某思路如下: 用Timer,当当前焦点转移时开始计时(焦点问题要调用API[或主界面的OnDeActivate?]),在预定时间内程序未得到“焦点”时,尝试: for n:=0 to Controlcount-1 do Controls[n].Enabled:=false; 在主界面的 OnActivate 事件中 解锁
var vLastInputInfo: TLastInputInfo; begin Label1.Caption := TimeToStr(Now); vLastInputInfo.cbSize := SizeOf(vLastInputInfo); GetLastInputInfo(vLastInputInfo); if GetTickCount - vLastInputInfo.dwTime > 200000 then begin if not Assigned(form2) then begin form2:=Tform2.Create(Application); form2.ShowModal; form2 := nil end; end;
用Timer,当当前焦点转移时开始计时(焦点问题要调用API[或主界面的OnDeActivate?]),在预定时间内程序未得到“焦点”时,尝试:
for n:=0 to Controlcount-1 do
Controls[n].Enabled:=false;
在主界面的 OnActivate 事件中 解锁
我也知道用timer,然后所有控件disabled,当当前焦点转移时开始计时,如果我的焦点一直不离开呢,突然有事人离开,焦点还在某一控件,完全有可能,你的思路有点简单,没有实际意义,细细想一下就知道,明显的为做程序而写程序,没有考虑实际操作,你把所有控件都disabled了,因为但前按钮本来就有enabled和disabled的,比如,新增按钮不可用,保存可用,等你恢复时候咋办,全部enabled?细节没有考虑到to:fanren945
我问的是怎么判断,什么时候开始几时没有键盘或鼠标动作请继续讨论
截止输入:可以弹出密码输入框,ShowModal就可以了.
像屏保、MSN都有你所说的那些功能,具体实现都是要调用API...1L我说的那样能解决问题,不过确实过于“简单”,
vLastInputInfo: TLastInputInfo;
begin
Label1.Caption := TimeToStr(Now);
vLastInputInfo.cbSize := SizeOf(vLastInputInfo);
GetLastInputInfo(vLastInputInfo);
if GetTickCount - vLastInputInfo.dwTime > 200000 then
begin
if not Assigned(form2) then
begin
form2:=Tform2.Create(Application);
form2.ShowModal;
form2 := nil
end;
end;