diff --git a/src/MaaCore/Controller/Platform/Win32IO.cpp b/src/MaaCore/Controller/Platform/Win32IO.cpp index 4f4ef3384d..d1b08de99d 100644 --- a/src/MaaCore/Controller/Platform/Win32IO.cpp +++ b/src/MaaCore/Controller/Platform/Win32IO.cpp @@ -208,12 +208,6 @@ std::optional asst::Win32IO::call_command(const std::string& cmd, bool recv } } - DWORD exit_ret = 0; - GetExitCodeProcess(process_info.hProcess, &exit_ret); - CloseHandle(process_info.hProcess); - CloseHandle(process_info.hThread); - CloseHandle(pipe_parent_read); - CloseHandle(pipeov.hEvent); if (recv_by_socket) { if (accept_pending) { Log.warn("cancel AcceptEx"); @@ -228,6 +222,16 @@ std::optional asst::Win32IO::call_command(const std::string& cmd, bool recv CloseHandle(sockov.hEvent); } + if (process_running) { + TerminateProcess(process_info.hProcess, 0); + } + + DWORD exit_ret = 0; + GetExitCodeProcess(process_info.hProcess, &exit_ret); + CloseHandle(process_info.hProcess); + CloseHandle(process_info.hThread); + CloseHandle(pipe_parent_read); + CloseHandle(pipeov.hEvent); return static_cast(exit_ret); }