|
发表于 2022-2-17 15:58:19
|
显示全部楼层
介绍一段思路吧,可以一试:
- void CSetWinEventHookDlg::OnOK()
- {
- if (NULL == m_hHook)
- {
- m_hHook = ::SetWinEventHook(
- EVENT_MIN,
- EVENT_MAX,
- NULL,
- WinEventsProc, 0, 0,
- WINEVENT_OUTOFCONTEXT);
- }
-
- }
-
- void CSetWinEventHookDlg::OnCancel()
- {
- if (m_hHook)
- {
- ::UnhookWinEvent(m_hHook);
- m_hHook = NULL;
- }
- }
-
- VOID CALLBACK WinEventsProc(HWINEVENTHOOK hWinEventHook, DWORD dwEvent, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime )
- {
- switch(dwEvent)
- {
- case EVENT_SYSTEM_SWITCHSTART:
- CSetWinEventHookDlg::ChangUI(_T("Alt+Tab Start"));
- break;
-
- case EVENT_SYSTEM_SWITCHEND:
- CSetWinEventHookDlg::ChangUI(_T("Alt+Tab End"));
- break;
-
- case EVENT_SYSTEM_MENUPOPUPSTART:
- CSetWinEventHookDlg::ChangUI(_T("PopMenu Start"));
- break;
-
- case EVENT_SYSTEM_MENUPOPUPEND:
- CSetWinEventHookDlg::ChangUI(_T("PopMenu End"));
- break;
- }
- }
复制代码 |
|