break;\r
}\r
\r
+ case Notify::Type_threadAttach: {\r
+ NotifyThreadAttach *n = (NotifyThreadAttach *)cd->lpData;\r
+ m_engine.threadAttachNotify(n->m_threadId);\r
+ break;\r
+ }\r
+\r
case Notify::Type_threadDetach: {\r
NotifyThreadDetach *n = (NotifyThreadDetach *)cd->lpData;\r
m_engine.threadDetachNotify(n->m_threadId);\r
\r
///\r
~Mayu() {\r
- CancelIo(m_hNotifyMailslot);\r
- SleepEx(0, TRUE);\r
- CloseHandle(m_hNotifyMailslot);\r
- CloseHandle(m_hNotifyEvent);\r
- ReleaseMutex(m_mutex);\r
- WaitForSingleObject(m_mutex, INFINITE);\r
- // first, detach log from edit control to avoid deadlock\r
- m_log.detach();\r
-#ifdef LOG_TO_FILE\r
- m_logFile.close();\r
-#endif // LOG_TO_FILE\r
-\r
// stop notify from mayu.dll\r
g_hookData->m_hwndTaskTray = NULL;\r
CHECK_FALSE( uninstallMessageHook() );\r
}\r
CloseHandle(m_hMutexYamyd);\r
#endif // _WIN64\r
- if (!(m_sessionState & SESSION_END_QUERIED)) {\r
- DWORD_PTR result;\r
- SendMessageTimeout(HWND_BROADCAST, WM_NULL, 0, 0, SMTO_ABORTIFHUNG, 3000, &result);\r
- }\r
+\r
+ CancelIo(m_hNotifyMailslot);\r
+ SleepEx(0, TRUE);\r
+ CloseHandle(m_hNotifyMailslot);\r
+ CloseHandle(m_hNotifyEvent);\r
+ ReleaseMutex(m_mutex);\r
+ WaitForSingleObject(m_mutex, INFINITE);\r
+ // first, detach log from edit control to avoid deadlock\r
+ m_log.detach();\r
+#ifdef LOG_TO_FILE\r
+ m_logFile.close();\r
+#endif // LOG_TO_FILE\r
\r
// destroy windows\r
CHECK_TRUE( DestroyWindow(m_hwndVersion) );\r
// stop keyboard handler thread\r
m_engine.stop();\r
\r
+ if (!(m_sessionState & SESSION_END_QUERIED)) {\r
+ DWORD_PTR result;\r
+ SendMessageTimeout(HWND_BROADCAST, WM_NULL, 0, 0, 0, 3000, &result);\r
+ }\r
+\r
// remove setting;\r
delete m_setting;\r
}\r