如何编程让电脑自动锁定计算机?(100分)

  • 主题发起人 主题发起人 johnnywong
  • 开始时间 开始时间
J

johnnywong

Unregistered / Unconfirmed
GUEST, unregistred user!
在3分钟内,如果电脑没有接收到鼠标移动的信息时自动锁定计算机(就是ctrl+alt+delete这个锁定),请问这样用delphi如何实现?
 
delphi中:
function LockWorkStation; external user32 name 'LockWorkStation';
(user32.dll, func:LockWorkStation())
procedure TForm1.Button1Click(Sender: TObject);
begin
LockWorkStation;
end;
用timer判断时间,
Win32 SDK中:
BOOL LockWorkStation(VOID);
只有2000可用
 
能详细解析么?我希望是自动锁定,不用人工按键
 
用timer判断时间,若是三分钟,鼠标的位置没有动,则触发LockWorkStation函数
 
能告诉我完整的代码么?我是初学者,不是太明白
 
屏幕保护程序,设置“密码保护”,在nt/2000下,当屏幕保护运行的时候,就是锁定工作站
 
使用屏幕保护程序方便。
 
procedure LockWorkStation; external user32 name 'LockWorkStation';
Procedure Tform1.wait(time1:integer);//time1是毫秒
var begin1:integer;
point1,point2:tpoint;
begin
getcursorpos(point1);
while true do
begin
application.ProcessMessages;
getcursorpos(point2);
if (point1.x<>point2.X) or (point1.y<>point2.y) then
begin
begin1:=gettickcount;
point1:=point2;
end
else
if gettickcount-begin1>=time1 then
begin
LockWorkStation;
break;
end;
end;
end;
 
to zxb200:
一动鼠标就锁定,跟意图相反
 
to johnnywong:
在我這好好的,這樣你先測試一下,把這條語句寫在按扭
的單擊事件中。
procedure TForm1.Button1Click(Sender: TObject);
begin
wait(3000); //3秒內鼠标不動則鎖住
end;
運行程序,點擊按鈕,動動鼠标或不動鼠标看有什么反應。

 
Answer:Here it goes:

procedure LockPC;
var OldValue: LongBool;
begin
SystemParametersInfo(97, Word(Bool), @OldValue, 0);
WinExec(PChar('rundll32 mouse,disable'), SW_SHOW);
WinExec(PChar('rundll32 keyboard,disable'), SW_SHOW);
end;

Have fun!!!
 
To:zxb200
要是多窗体呢?
怎么监测多窗体的鼠标移动呢?
 
用APPLICATIONEVENTS来实现
 
用BLOCKINPUT也行[:)]
 
利用 TApplication 中的一个事件:OnIdle .
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部