应用程序未激活怎样截取屏保、待机消息?解决办法
应用程序未激活怎样截取屏保、待机消息??
Windows在启动屏幕保护程序前会向当前激活的应用程序发WM_SYSCOMMAND消息。
当是如果当前应用程序没有激活,能用什么办法截获WM_SYSCOMMAND的消息?
void CGgDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if((nID == SC_SCREENSAVE || nID == SC_MONITORPOWER))
{ return; }
else CDialog::OnSysCommand(nID, lParam);
}
这段程序只有在该窗口激活的状态下才能截取SC_SCREENSAVE和SC_MONITORPOWER消息,进而阻止系统进入屏保和待机。
而我希望在该应用程序(已经运行开来的了)没有激活的状态下,截取系统的屏保和待机消息~
比方说我把应用程序最小化了,还能阻止屏保和待机……
希望大家帮忙指点,能提供详细的代码更好。谢谢
------解决方案--------------------
HOOK
------解决方案--------------------
::SetWindowsHookEx(WH_GETMESSAGE,...);
------解决方案--------------------
http://topic.****.net/u/20100129/14/d50b04f9-856c-4493-998b-8a6555ecf8d5.html
------解决方案--------------------
这个文章不是已经有人问过了吗。你看下以前的文章
------解决方案--------------------
只是阻止的话可以用 SetThreadExecutionState
Windows在启动屏幕保护程序前会向当前激活的应用程序发WM_SYSCOMMAND消息。
当是如果当前应用程序没有激活,能用什么办法截获WM_SYSCOMMAND的消息?
void CGgDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if((nID == SC_SCREENSAVE || nID == SC_MONITORPOWER))
{ return; }
else CDialog::OnSysCommand(nID, lParam);
}
这段程序只有在该窗口激活的状态下才能截取SC_SCREENSAVE和SC_MONITORPOWER消息,进而阻止系统进入屏保和待机。
而我希望在该应用程序(已经运行开来的了)没有激活的状态下,截取系统的屏保和待机消息~
比方说我把应用程序最小化了,还能阻止屏保和待机……
希望大家帮忙指点,能提供详细的代码更好。谢谢
------解决方案--------------------
HOOK
------解决方案--------------------
::SetWindowsHookEx(WH_GETMESSAGE,...);
------解决方案--------------------
http://topic.****.net/u/20100129/14/d50b04f9-856c-4493-998b-8a6555ecf8d5.html
------解决方案--------------------
这个文章不是已经有人问过了吗。你看下以前的文章
------解决方案--------------------
只是阻止的话可以用 SetThreadExecutionState