您的位置:首页 > 其它

windows程序自动锁屏功能的实现

2008-02-21 00:14 477 查看
这个问题来自论坛提问

Q:当我登录进入主界面时,在规定的时间内没有做任何操作,系统就注销(就像电脑的屏保)。

A: 其实很简单,参考一个api函数就可以了:GetLastInputInfo,以下是参考代码

演示程序在你10秒内没有任何鼠标键盘活动既最小化,最小化后晃动鼠标即可复原



using
System;



using
System.Collections.Generic;



using
System.ComponentModel;



using
System.Data;



using
System.Drawing;



using
System.Text;



using
System.Windows.Forms;



using
System.Runtime.InteropServices;





namespace
WindowsApplication28





...
{




public

partial

class
Form1 : Form






...
{



[StructLayout(LayoutKind.Sequential)]




public

struct
LASTINPUTINFO






...
{



[MarshalAs(UnmanagedType.U4)]




public

int
cbSize;



[MarshalAs(UnmanagedType.U4)]




public

uint
dwTime;



}



[DllImport(
"
user32.dll
"
)]




public

static

extern

bool
GetLastInputInfo(
ref
LASTINPUTINFO plii);










public

long
getIdleTick()






...
{



LASTINPUTINFO vLastInputInfo
=

new
LASTINPUTINFO();



vLastInputInfo.cbSize
=
Marshal.SizeOf(vLastInputInfo);




if
(
!
GetLastInputInfo(
ref
vLastInputInfo))
return

0
;




return
Environment.TickCount
-
(
long
)vLastInputInfo.dwTime;



}






public
Form1()






...
{



InitializeComponent();



}






private

void
Form1_Load(
object
sender, EventArgs e)






...
{




this
.timer1.Interval
=

2000
;




this
.timer1.Enabled
=

true
;





}




private

void
timer1_Tick(
object
sender, EventArgs e)






...
{




long
i
=
getIdleTick();




this
.Text
=

string
.Format(
"
jinjazz说:您已经{0}ms没有动了
"
,i);




if
(i
>

10

*

1000
)






...
{




this
.WindowState
=
FormWindowState.Minimized;



}




else






...
{




this
.WindowState
=
FormWindowState.Normal;



}



}







}



}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: