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;
             }
         }
         
     }
 }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值