Welcome 微信登录
编程资源 图片资源库

首页 / 软件开发 / .NET编程技术 / windows程序自动锁屏功能的实现

windows程序自动锁屏功能的实现2012-01-26 csdn 贾涛这个问题来自论坛提问

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