experiment: recive windows notify message on tray program

实验的原因: 想在托盘上接收windows退出或注销消息.

在原始demo中是可以的,那是个win32程序.

托盘中注册通知总是得到1702错误.

先记下, 有时间,做个实验。


<2011_1001>

参考资料:

Turn Off Monitor when PC is Locked

http://www.codeproject.com/KB/winsdk/Turn_OFF_Monitor_OnLock.aspx


可以以前搞错了, 弄个托盘和接收不到系统通知没有任何关系.  带上托盘也是可以收到消息通知的.

注册Windows消息通知和窗体程序没区别,也是注册到主窗口的句柄上。只是主窗体不显示而已.

INT ProcessWindowsSystemNotify(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, TAG_PROCESS_SYSTEM_NOTIFY * pProcess)
{
	if(!pProcess->pDebugLog)
		goto END;

    switch (wParam)
    {
    case WTS_SESSION_UNLOCK:
        {
			/** 在WinXpSp3下, 不显示欢迎界面时, 三键锁定界面解锁时, 进入这里 */
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_SESSION_UNLOCK"));
        }
        break;

    case WTS_SESSION_LOCK:
        {
			/** 在WinXpSp3下, 不显示欢迎界面时, 三键锁定界面锁定时, 进入这里 */
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_SESSION_LOCK"));
        }
        break;

    case WTS_SESSION_LOGON:
		{
			/** 一个账户收不到本身的此消息 */
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_SESSION_LOGON"));
		}
		break;

	case WTS_SESSION_LOGOFF:
		{
			/** 一个账户收不到本身的此消息 */
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_SESSION_LOGOFF"));
		}
		break;

	case WTS_REMOTE_CONNECT:
		{
			/** 在WinXpSp3下, 同一个账户, 已经登录过, 
			* 用远程桌面用同一个账户远程登入, 进入这里 
			*/
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_REMOTE_CONNECT"));
		}
		break;

	case WTS_REMOTE_DISCONNECT:
		{
			/** 在WinXpSp3下, 同一个账户, 已经登录过, 
			* 用远程桌面用同一个账户远程登等出, 进入这里 
			*/
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_REMOTE_DISCONNECT"));
		}
		break;

	case WTS_SESSION_REMOTE_CONTROL:
		{
			/** 启动的晚, 没有收到此消息 */
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_SESSION_REMOTE_CONTROL"));
		}
		break;

	case WTS_CONSOLE_DISCONNECT:
		{
			/** 别的用户登录时, 已经登录的用户控制连接断开, 进入这里 */
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_CONSOLE_DISCONNECT"));
		}
		break;

	case WTS_CONSOLE_CONNECT:
		{
			/** 用户登录后, 进入这里 */
			TRACE_CODE_INFO(pProcess->pDebugLog, _T("WTS_CONSOLE_CONNECT"));
		}
		break;

    default:
		{
			pProcess->pDebugLog->logv(_T("<%s><%d> <%s>=<%d> <%s>=<%d>"), 
				__WFILE__, __LINE__,
				_T("wParam"), wParam,
				_T("lParam"), lParam);
		}
		break;
    };

END:
    return S_OK;
}


系统登出的消息,  GINA程序可以得到.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值