当前位置:首页 > 操作系统 > Windows

WPF捕捉Windows关机事件

                <span>1</span>
                <span>private</span>
                <span>const</span>
                <span>int</span> SC_SCREENSAVE = <span>0xF140</span><span>;
</span><span>2</span><span>private</span><span>const</span><span>int</span> WM_QUERYENDSESSION = <span>0x0011</span><span>;
</span><span>3</span><span>private</span><span>bool</span> IsScreenSave = <span>false</span><span>;
</span><span>4</span><span>private</span><span>bool</span> IsWindowStopClosing = <span>false</span>;
变量


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

public XX{

 

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

 

}

 

                <span> 1</span>
                <span>///</span>
                <span><summary></span>
                <span> 2</span>
                <span>///</span>
                <span> 重新WndProc
</span>
                <span> 3</span>
                <span>///</span>
                <span></summary></span>
                <span> 4</span>
                <span>///</span>
                <span><param name="hwnd"></span>
                <span>窗口句柄</span>
                <span></param></span>
                <span> 5</span>
                <span>///</span>
                <span><param name="msg"></span>
                <span>消息ID</span>
                <span></param></span>
                <span> 6</span>
                <span>///</span>
                <span><param name="wParam"></span>
                <span>消息的 wParam 值</span>
                <span></param></span>
                <span> 7</span>
                <span>///</span>
                <span><param name="lParam"></span>
                <span>消息的 lParam 值</span>
                <span></param></span>
                <span> 8</span>
                <span>///</span>
                <span><param name="handled"></span>
                <span>指示该消息是否已处理的值。如果该消息已处理,请将值设置为 true;否则请将其设置为 false</span>
                <span></param></span>
                <span> 9</span>
                <span>///</span>
                <span><returns></returns></span>
                <span>10</span>
                <span>private</span> IntPtr WndProc(IntPtr hwnd, <span>int</span> msg, IntPtr wParam, IntPtr lParam, <span>ref</span><span>bool</span><span> handled)
</span><span>11</span><span>        {
</span><span>12</span><span>if</span> (msg ==<span> WM_QUERYENDSESSION)
</span><span>13</span><span>            {
</span><span>14</span><span>using</span> (<span>var</span> wcf = <span>new</span><span> KeFuServicesClient())
</span><span>15</span><span>                {
</span><span>16</span><span>                    wcf.UpdateUserState(MainPanelWindow.ClientServiceID, UserStates.UnLine);
</span><span>17</span><span>                }
</span><span>18</span><span>            }
</span><span>19</span><span>return</span><span> IntPtr.Zero;
</span><span>20</span>         }
捕捉操作系统关机事件

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

原文:http://www.cnblogs.com/gaobing/p/3809485.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐