获取键盘或鼠标多久没有对屏幕进行操作了

屏幕保护相关代码:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using System.Threading;
 10 using System.Runtime.InteropServices;
 11 using WindowsFormsApplication1.Bus;
 12
 13 namespace WindowsFormsApplication1
 14 {
 15     public partial class Screen : Form
 16     {
 17         public Screen()
 18         {
 19             InitializeComponent();
 20         }
 21
 22         private static Screen scr = null;
 23
 24         /// <summary>
 25         /// 屏保窗体
 26         /// </summary>
 27         /// <returns></returns>
 28         public static Screen GetScreen() {
 29             if (scr == null) {
 30                 scr = new Screen();
 31             }
 32             return scr;
 33         }
 34
 35         ProductInfoWS.ProductInfoService ws = new WindowsFormsApplication1.ProductInfoWS.ProductInfoService();
 36
 37        // KeyboardHook keyHook = new KeyboardHook();   //键盘钩子
 38
 39         public string FormNum =string.Empty;
 40
 41         Thread t;  //定义一个线程
 42         private void Screen_Load(object sender, EventArgs e)
 43         {
 44
 45             Max();
 46             t = new Thread(new ThreadStart(RunImage));
 47             t.Start();             //启动线程
 48             timer1.Start();
 49
 50         }
 51
 52
 53
 54         DataTable dt = null;
 55
 56         string aa = "227";
 57         //图片轮播方法
 58         public void RunImage()    //换图片的方法
 59         {
 60
 61             string xml=ws.GetImage(Common.DeptID);
 62
 63             if (!string.IsNullOrEmpty(xml))
 64             {
 65                 dt = UserBus.ConvertXMLToDataSet(xml).Tables[0];
 66             }
 67
 68
 69             if (dt != null && dt.Rows.Count > 0)
 70             {
 71                 while (true)      //循环````
 72                 {
 73                     for (int i = 0; i < dt.Rows.Count; i++)
 74                     {
 75                         pictureBox1.ImageLocation = dt.Rows[i]["ImageURL"].ToString();
 76                        // string ccc = dt.Rows[i]["Minute"].ToString();
 77                         Thread.Sleep(2000);            //换一次图片让线程休息多少时间具体修改里面的参数例如一秒换一次填1000
 78                     }
 79                 }
 80
 81             }
 82             else
 83             {
 84                 pictureBox1.ImageLocation = "http://erp.ozz99.com.cn/SCImg/新浪微博登陆1.jpg";
 85             }
 86         }
 87
 88
 89
 90         [StructLayout(LayoutKind.Sequential)]
 91         struct LASTINPUTINFO
 92         {
 93             [MarshalAs(UnmanagedType.U4)]
 94             public int cbSize;
 95             [MarshalAs(UnmanagedType.U4)]
 96             public uint dwTime;
 97         }
 98         [DllImport("user32.dll")]
 99         static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
100         /// <summary>
101         ///获取键盘和鼠标没有操作的时间方法
102         /// </summary>
103         /// <returns></returns>
104         static long GetLastInputTime()
105         {
106             LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
107             vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
108             if (!GetLastInputInfo(ref vLastInputInfo))
109                 return 0;
110             return Environment.TickCount - (long)vLastInputInfo.dwTime;
111
112         }
113
114
115         private void Screen_Deactivate(object sender, EventArgs e)
116         {
117
118
119
120         }
121
122
123         public void timer1_Tick(object sender, EventArgs e)
124         {
125
126
127             if (dt != null && dt.Rows.Count > 0)
128             {
129
130
131                 if (GetLastInputTime() > (Convert.ToInt32(dt.Rows[0]["Minute"].ToString()) * 60000))
132                 {
133                     this.TopMost = true;
134                     this.WindowState = FormWindowState.Maximized;
135
136                 }
137
138             }
139             else
140             {
141
142                 if (GetLastInputTime() >60000)
143                 {
144                     this.TopMost = true;
145                     this.WindowState = FormWindowState.Maximized;
146
147                 }
148
149             }
150
151
152
153
154         }
155
156
157         private void Screen_KeyDown(object sender, KeyEventArgs e)
158         {
159             this.TopMost = false;
160             this.WindowState = FormWindowState.Minimized;
161
162         }
163
164
165         //窗体最大化
166         public void Max() {
167
168            // this.Opacity = 0.9;
169             if (this.WindowState == FormWindowState.Maximized)
170             {
171                 this.WindowState = FormWindowState.Normal;
172             }
173             else
174             {
175                 this.FormBorderStyle = FormBorderStyle.None;
176                 this.WindowState = FormWindowState.Maximized;
177             }
178
179         }
180
181         /// <summary>
182         /// 鼠标点击事件
183         /// </summary>
184         /// <param name="sender"></param>
185         /// <param name="e"></param>
186         private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
187         {
188             this.TopMost = false;
189             this.WindowState = FormWindowState.Minimized;
190
191
192         }
193
194
195
196
197     }
198 }

1. 让屏幕永远在最前面:TopMost;

2. 接口写好后,需要更新引用;

3. TextBox密码显示:PasswordChar为*;

时间: 2024-10-17 07:57:57

获取键盘或鼠标多久没有对屏幕进行操作了的相关文章

WPF 窗体中获取键盘和鼠标无操作时的超时提示

原文:WPF 窗体中获取键盘和鼠标无操作时的超时提示 通过调用Windows API中的GetLastInputInfo来获取最后一次输入的时间 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windo

原生获取 键盘 keycode 鼠标 键码

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>原生js数据库测试</title> <link rel="stylesheet" href=""

C# 判断系统空闲(键盘、鼠标不操作一段时间)

利用windows API函数 GetLastInputInfo()来判断系统空闲 //添加引用 using System.Runtime.InteropServices; 1 // 创建结构体用于返回捕获时间 2 [StructLayout(LayoutKind.Sequential)] 3 struct LASTINPUTINFO 4 { 5 // 设置结构体块容量 6 [MarshalAs(UnmanagedType.U4)] 7 public int cbSize; 8 // 捕获的时间

WPF 中模拟键盘和鼠标操作

转载:http://www.cnblogs.com/sixty/archive/2009/08/09/1542210.html 更多经典文章:http://www.qqpjzb.cn/65015.html 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys.Send()方法会报错. 不过没关系, 至少有use32的SendInput可用,通过P/Invoke

C# 系统应用之鼠标模拟技术及自动操作鼠标

游戏程序的操作不外乎两种--键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C#调用Windows API函数实现鼠标模拟操作的功能.首先通过结合FindWindow和FindWindowEx寻找到窗体的按钮,在通过SetCursorPos或mouse_event函数操作鼠标,同时涉及到通过spy++工具获取窗体消息的信息. 一. Windows API函数介绍 .NET没有提供改变鼠标指针位置.模拟单机操作的函数,但是可以通过调用Windows

C#键盘钩子 鼠标钩子

最新对C#模拟键盘按键,鼠标操作产生了兴趣.特从网上收集了一些常用的API用来调用键盘,鼠标操作. class Win32API { #region DLL导入 /// <summary> /// 用于设置窗口 /// </summary> /// <param name="hWnd"></param> /// <param name="hWndInsertAfter"></param> ///

js获取键盘的keyCode-------Day42

济南今天是大雨倾盆啊,这闷热一扫而空,不过有些电闪雷鸣的,原想在公司里就完成今天的博客记录的,不过不知道为什么怎么也登不上博客,估计是CSDN当时的服务器出问题了吧,好在到了晚上,这雷声小了也少了,才敢继续打开电脑,闲话不多说了,开搞. 很多时候我觉得自己是个奇怪的人,对待同一件事物如果感兴趣了,可以亢奋到不知疲惫,可如果不感兴趣了,每一刻都是煎熬,就好比说跑步,我总感觉长跑是件很痛苦的事情,跑个400都要喘很久,可有朋友邀我拍着篮球去跑,哪怕不耍,不投,就那么单纯的拍着跑,就那样傻跑了好久,关

[转]C# 系统应用之鼠标模拟技术及自动操作鼠标

原文网址: C# 系统应用之鼠标模拟技术及自动操作鼠标        游戏程序的操作不外乎两种——键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C#调用Windows API函数实现鼠标模拟操作的功能.首先通过结合FindWindow和FindWindowEx寻找到窗体的按钮,在通过SetCursorPos或mouse_event函数操作鼠标,同时涉及到通过spy++工具获取窗体消息的信息. 一. Windows API函数介绍 .NET没有提

WPF之路-键盘与鼠标事件 - 简书

原文:WPF之路-键盘与鼠标事件 - 简书 键盘事件 事件类型分为以下几个类型 生命周期事件:在元素加载与卸载的时候发生 鼠标事件:鼠标动作 键盘事件:键盘动作 手写笔事件:适用于win7以上的系统 多点触控事件:一个手指或多个手指的触控动作 键盘事件 键盘事件的执行顺序: PrevieKeyDown KeyDown PreviewTextInput TextInput PreviewKeyUp KeyUp 下面以实例代码证实: 在TextBox中分别添加PreviewKeyDown/KeyDo