diff --git a/device/win_usb/win_usb.cpp b/device/win_usb/win_usb.cpp index a27e1a0..5f03f8f 100644 --- a/device/win_usb/win_usb.cpp +++ b/device/win_usb/win_usb.cpp @@ -1205,6 +1205,12 @@ void usb_monitor::quit(void) { KillTimer(wnd_monitor_, usb_monitor::find_usb_timer_); run_ = false; + if (IsWindow(wnd_monitor_)) + { + PostMessage(wnd_monitor_, WM_QUIT, 0, 0); + Sleep(100); + } + if (handle_msg_.get()) { PostThreadMessageW(handle_msg_id_, WM_QUIT, 0, 0); @@ -1213,11 +1219,6 @@ void usb_monitor::quit(void) handle_msg_.reset(); } - if (IsWindow(wnd_monitor_)) - { - PostMessage(wnd_monitor_, WM_QUIT, 0, 0); - } - { std::lock_guard lock(lock_); for (auto& v : devices_) diff --git a/lang/dllmain.cpp b/lang/dllmain.cpp index daed8c8..3ce9c7f 100644 --- a/lang/dllmain.cpp +++ b/lang/dllmain.cpp @@ -1,6 +1,8 @@ // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "pch.h" +extern void clear_language_data(void); + BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved @@ -11,7 +13,9 @@ BOOL APIENTRY DllMain( HMODULE hModule, case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: + break; case DLL_PROCESS_DETACH: + clear_language_data(); break; } return TRUE;