private const int SC_SCREENSAVE = 0xF140;
private const int WM_QUERYENDSESSION = 0x0011;
private bool IsScreenSave = false;
private bool IsWindowStopClosing = false;

变量

不废话,直接贴代码,构造函数中

public XX{

    // 获得窗口句柄
IntPtr hwnd = new WindowInteropHelper(this).Handle;
// 在Win32窗口中显示WPF的内容
HwndSource src = HwndSource.FromHwnd(hwnd);
//接收窗口消息的处理程序实现(基于 System.Windows.Interop.HwndSourceHook 委托)
src.AddHook(new HwndSourceHook(WndProc));

Register

}

     /// <summary>
/// 重新WndProc
/// </summary>
/// <param name="hwnd">窗口句柄</param>
/// <param name="msg">消息ID</param>
/// <param name="wParam">消息的 wParam 值</param>
/// <param name="lParam">消息的 lParam 值</param>
/// <param name="handled">指示该消息是否已处理的值。如果该消息已处理,请将值设置为 true;否则请将其设置为 false</param>
/// <returns></returns>
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_QUERYENDSESSION)
{
using (var wcf = new KeFuServicesClient())
{
wcf.UpdateUserState(MainPanelWindow.ClientServiceID, UserStates.UnLine);
}
}
return IntPtr.Zero;
}

捕捉操作系统关机事件

.NET技术交流群 199281001 .欢迎加入。

WPF捕捉Windows关机事件的更多相关文章

  1. C#之关机事件

    一.背景 做了个APP,通过向下位机发送串口数据,然后通过串口去控制多路光源,现在的问题来了,若是电脑强行关机,而APP又没在电脑关机前做任何动作,导致电脑已经关机了,而下位机控制的灯源还在工作.所以 ...

  2. 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了

    系统关闭窗体的事件顺序为: OnCloseQuery ----> OnClose ----> OnDestroy 下面的代码说明问题: unit Unit3; interface uses ...

  3. WPF 程序检测 windows 关机

    1.使用SessionEnding事件 参考MSDN. 2.在需要处理 关机事件中可以注册SessionEnding事件 App.Current.SessionEnding += Current_Se ...

  4. windows开关机事件

    开关机事件.xml <ViewerConfig> <QueryConfig> <QueryParams> <Simple> <BySource&g ...

  5. WPF 学习笔记 路由事件

    1. 可传递的消息: WPF的UI是由布局组建和控件构成的树形结构,当这棵树上的某个节点激发出某个事件时,程序员可以选择以传统的直接事件模式让响应者来响应之,也可以让这个事件在UI组件树沿着一定的方向 ...

  6. Windows关机过程分析与快速关机

    原文链接:http://blog.csdn.net/flyoxs/article/details/3710367 Windows开机和关机慢,很多时候慢得令人抓狂.特别是做嵌入式开发时(如XPE和Wi ...

  7. WPF、Windows Forms和Silverlight间的联系和区别(转)

    WPF.Windows Forms和Silverlight间的联系和区别http://blog.csdn.net/bitfan/article/details/6128391 .NET Windows ...

  8. 编程实现Windows关机、重启、注销

    要想编程使Windows关机.重启或者注销,可以使用ExWindowsEx这个API函数,该函数只有两个参数,第一个表示关机动作的标志,也就是你要让该函数关机呢,还是重启,还是注销等.可以使用EWX_ ...

  9. WPF: 针对Windows 8优化菜单栏和工具栏

    原文 WPF: 针对Windows 8优化菜单栏和工具栏 目录 1. 关于菜单图标大小 2. 关于IsEnabled和工具栏图标 3. 针对.NET 3.x的菜单栏和工具栏外观 返回目录 1. 关于菜 ...

随机推荐

  1. IT客学院《构建高转化率的着陆页-PS+HTML+网络营销》共25节【价值199元】无水印版

    课程简介本课程是全网独家专业的着陆页课程,课程完整的再现了整个着陆页实战案例的开发过程,包括:策划.设计和实现.上线后的推广.优化及提高转化率的技巧等,本套课程能帮助您迅速掌握着陆页的能力,迅速洞察完 ...

  2. Atom使用心得 - 21世纪的编辑器

    Atom使用心得 - 21世纪的编辑器 Atom下载 Atom简介:是专门为程序员推出的一个跨平台文本编辑器.具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScrip ...

  3. gdb调试汇编堆栈分析

    代码(src/05/gdb.c) int g(int x) { return x + 4; } int f(int x) { return g(x); } int main(void) { retur ...

  4. Jenkins进阶系列之——08Jenkins纳入版本控制

    2014-07-25:更新shell脚本 2014-06-05:更新shell脚本 2014-01-09:更新shell脚本,修改Jenkins文件删除后不能自动从版本控制删除的bug 是不是有过这种 ...

  5. 初识Groovy

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python.Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代 ...

  6. AngularJS - 快速入门

    刚开始接触时总是去wiki或各种百科以了解一番. 它们会告诉我一些MVVM.双向数据绑定.依赖注入等等名词,觉得这些名词好上档次,然后我很可能就不打算用这个东西了. AngularJS是什么? 完全使 ...

  7. tomcat 配置

    tomcat 安装完成之后,我们可以在器目录先看到有如下结构

  8. SQLHelper---赵晓虎(简洁,全面)

    public static class SQLHelper { //获取连接字符串,,首先添加对configuration的引用 private static string connStr = Con ...

  9. CSS3媒体查询

    随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得在国内IE6用户居高不下的情况下,这些新的技术还不会广泛的蔓延下去,那你就错了,如今淘宝,凡客,携程等等公司都已经在大胆 ...

  10. Oracle中的伪列

    分页查询中,需要用到伪列rownum,代码如下: select * from (select rownum rn, name from cost where rownum <= 6) where ...