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

这个问题来自论坛提问

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;

            }




        }




         

    }




}

版权声明:本文为cl1024cl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cl1024cl/archive/2008/02/21/6204967.html