experiment: recive windows notify message on tray program
2011-09-27 20:51
399 查看
实验的原因: 想在托盘上接收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消息通知和窗体程序没区别,也是注册到主窗口的句柄上。只是主窗体不显示而已.
系统登出的消息, GINA程序可以得到.
在原始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程序可以得到.
相关文章推荐
- ON_NOTIFY_REFLECT : Message Reflection for Windows Controls
- 从ON_MESSAGE和ON_NOTIFY理解windows的消息机制
- 在MFC中,ON_COMMAND, ON_MESSAGE, ON_NOTIFY它们的区别?(转)
- Why is the "DEBUG: Error 2836" message generated in the DB2 V8, V9.1, or V9.5 installation log file on Windows system?
- How to prevent the Program Compatibility Assistant from appearing on Windows Vista
- ON_MESSAGE ,ON_COMMAND, , ON_NOTIFY
- [转]MFC中ON_COMMAND, ON_MESSAGE, ON_NOTIFY它们的区别
- patch program on windows
- How Can I Minimize a VI to an Icon on the Windows System Tray?
- 终极理解ON_MESSAGE和ON_NOTIFY
- ON_MESSAGE ,ON_COMMAND, ON_NOTIFY
- MFC中ON_COMMAND,ON_MESSAGE,ON_NOTIFY的区别
- Programmatically display system tray icon on Windows Mobile
- Debugging D Program on Windows
- ON_MESSAGE和ON_NOTIFY 区别
- MFC中ON_COMMAND,ON_MESSAGE,ON_NOTIFY的区别
- 【Visual Studio】Windows program compatibility mode is on, turn it off……
- similar to inotify on Windows
- ON_COMMAND/ON_MESSAGE/ON_NOTIFY区别与联系 【转】
- ON_MESSAGE,ON_COMMAND和ON_NOTIFY的区别和联系