如何捕获windows的关机和休眠命令

viki117 2010-03-16 06:05:36
如何捕获windows的关机和休眠命令?
是捕获,拦截下来,然后判断是什么命令,作相应的处理,
不知道是用钩子呢?还是用API注册呢?
...全文
562 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
viki117 2010-04-02
  • 打赏
  • 举报
回复
要的是拦截,在windows系统响应之前,要不其他窗口被结束了,就留一个。。有什么意思
ssny_123 2010-03-18
  • 打赏
  • 举报
回复
我也想知道答案,帮顶一下!!!!!!!!!!!!!!!!!
鸭梨山大帝 2010-03-17
  • 打赏
  • 举报
回复
顶 3 楼,楼主为什么不看下3楼的代码呢?


viki117 2010-03-17
  • 打赏
  • 举报
回复
MouseHookProcedure = new Win32API.HookProc(MouseHookProc);
MousehHook = Win32API.SetWindowsHookEx(WH_MOUSE_LL, MouseHookProcedure, pInstance, 0);

我不知道是不是这个意思,但是那些个参数,不知道到底SetWindowsHookEx应该怎么设置,才可以拦截ExitWindowsEx的消息阿
viki117 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
API Hook 拦截 ExitWindowsEx
[/Quote]
能不能给点例子。。
hjw001 2010-03-16
  • 打赏
  • 举报
回复
有点深奥不是很理解
king_wen 2010-03-16
  • 打赏
  • 举报
回复
学习个..........
wuyq11 2010-03-16
  • 打赏
  • 举报
回复
API Hook 拦截 ExitWindowsEx
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071018/17/eb9c5d28-f3ad-4d41-8235-933a0db4e3f3.html
criedshy 2010-03-16
  • 打赏
  • 举报
回复
         ///  <summary>  		
/// 重载WndProc消息处理函数
/// </summary>
/// <param name="m">windows消息 </param>
protected override void WndProc(ref System.Windows.Forms.Message m)
{
try
{
switch(m.Msg)
{
//系统退出消息处理,WM_QUERYENDSESSION是询问程序是否需要关闭,
//要有相应的反回值,0不关闭程序;1关闭程序
case WM_QUERYENDSESSION:
m.Result = (IntPtr)WM_TRUE;
return;
//休眠事件处理
case WM_POWERBROADCAST :
if (m.WParam == (IntPtr)PBT_APMQUERYSUSPEND)
{
//系统即将休眠消息处理
try
{
this.BusManager.Close();
m.Result = (IntPtr)WM_TRUE;
}
catch
{

//捕捉异常,不做处理
}
}
break;
default:
break;
}
base.WndProc (ref m);
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
criedshy 2010-03-16
  • 打赏
  • 举报
回复
///  <summary>  		/// 重载WndProc消息处理函数  		///  </summary>  		///  <param name="m">windows消息 </param>  		protected override void WndProc(ref System.Windows.Forms.Message m)  		{  			try  			{  				switch(m.Msg)  				{  						//系统退出消息处理,WM_QUERYENDSESSION是询问程序是否需要关闭,  						//要有相应的反回值,0不关闭程序;1关闭程序  					case WM_QUERYENDSESSION:  						m.Result = (IntPtr)WM_TRUE;  						return;  						//休眠事件处理					  					case WM_POWERBROADCAST :  						if (m.WParam == (IntPtr)PBT_APMQUERYSUSPEND)  						{  							//系统即将休眠消息处理  							try  							{  								this.BusManager.Close();  								m.Result = (IntPtr)WM_TRUE;  							}  							catch  							{  								//捕捉异常,不做处理  							}  						}  						break;  					default:  						break;  				}  				base.WndProc (ref m);  			}			  			catch(Exception e)  			{  				MessageBox.Show(e.Message);  			}  		} 
threenewbee 2010-03-16
  • 打赏
  • 举报
回复
拦截 wm_exit 消息。
判断。

110,579

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧