系统设置
显示器 在不使用的时候5分钟后 关闭。
程序 设置如下:
控制台程序 调用 Dll,Dll内有一个Form窗体
重载 wndproc 方法,监测 显示器状态。现在问题是 如果焦点不在Form窗体的时候
无法监测到显示器状态变化,如果焦点在Form窗体
的时候 则可以监控。
有什么办法 可以让焦点在 Console窗体的时候,
Form也运行的时候,还可以监测到显示器的状态么?
显示器 在不使用的时候5分钟后 关闭。
程序 设置如下:
控制台程序 调用 Dll,Dll内有一个Form窗体
重载 wndproc 方法,监测 显示器状态。现在问题是 如果焦点不在Form窗体的时候
无法监测到显示器状态变化,如果焦点在Form窗体
的时候 则可以监控。
有什么办法 可以让焦点在 Console窗体的时候,
Form也运行的时候,还可以监测到显示器的状态么?
解决方案 »
- 求助!.NET Runtime version 2.0.50727.3053 - Fatal Execution Engine Error (7A2E0F92)
- WCF 契约相关...
- spring.net与asp.net mvc的区别?
- 求一个正则表达式替换字符串写法
- 求制作酒店管理系统房态图的工具
- WPF DataGrid 主从表数据绑定方式
- dataGrid里添加行的问题
- 读取系统日志的问题
- C#采用OleDb导出Excel文件,如何设置单元格格式?
- 怎么解决C# winform在小屏幕电脑上界面显示不全的问题。
- 7z lzma压缩的sdk怎么使用?
- ADO.NET,请问 DataTable.Columns.Add(DataColumn)方法
重载我知道
检测呢?
用哪些API?显示器 在不使用的时候5分钟后 关闭你不会在wndproc 里判断鼠标键盘没有使用吧?
using System.Runtime.InteropServices;
using System.Threading;namespace ConsoleApplication1
{
class Program
{
[DllImport("user32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); [StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO
{
public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO)); [MarshalAs(UnmanagedType.U4)]
public UInt32 cbSize;
[MarshalAs(UnmanagedType.U4)]
public UInt32 dwTime;
} static uint GetLastInputTime()
{
uint idleTime = 0;
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = (uint)Marshal.SizeOf(lastInputInfo);
lastInputInfo.dwTime = 0; uint envTicks = (uint)Environment.TickCount; if (GetLastInputInfo(ref lastInputInfo))
{
uint lastInputTick = lastInputInfo.dwTime; idleTime = envTicks - lastInputTick;
} return idleTime;
} static void Main(string[] args)
{
while (true)
{
Console.WriteLine(String.Format("鼠标键盘空闲时间 {0} 毫秒", GetLastInputTime()));
Thread.Sleep(300);
} Console.ReadKey();
}
}
}