diff --git a/SteamTarget/SteamTargetRenderer.cpp b/SteamTarget/SteamTargetRenderer.cpp index bfb4d3b..978d6d3 100644 --- a/SteamTarget/SteamTargetRenderer.cpp +++ b/SteamTarget/SteamTargetRenderer.cpp @@ -112,6 +112,7 @@ void SteamTargetRenderer::run() void SteamTargetRenderer::stop() { bRunLoop = false; + unhookBindings(); QApplication::exit(0); } @@ -368,22 +369,27 @@ LRESULT WINAPI SteamTargetRenderer::HookCallback(int nCode, WPARAM wParam, LPARA return CallNextHookEx(hook, nCode, wParam, lParam); } +void SteamTargetRenderer::unhookBindings() +{ + if (bHookSteam) + { + QString dir = QDir::toNativeSeparators(QCoreApplication::applicationDirPath()); + dir = dir.mid(0, dir.lastIndexOf("\\")); + + QProcess proc; + proc.setNativeArguments(" --eject "); + proc.setWorkingDirectory(dir); + proc.start("..\\Injector.exe", QIODevice::ReadOnly); + proc.waitForStarted(); + proc.waitForFinished(); + } +} + BOOL SteamTargetRenderer::ConsoleCtrlCallback(DWORD dwCtrlType) { if (dwCtrlType == CTRL_CLOSE_EVENT || dwCtrlType == CTRL_BREAK_EVENT || dwCtrlType == CTRL_C_EVENT) { - if (bHookSteam) - { - QString dir = QDir::toNativeSeparators(QCoreApplication::applicationDirPath()); - dir = dir.mid(0, dir.lastIndexOf("\\")); - - QProcess proc; - proc.setNativeArguments(" --eject "); - proc.setWorkingDirectory(dir); - proc.start("..\\Injector.exe", QIODevice::ReadOnly); - proc.waitForStarted(); - proc.waitForFinished(); - } + unhookBindings(); return true; } diff --git a/SteamTarget/SteamTargetRenderer.h b/SteamTarget/SteamTargetRenderer.h index 4435b85..fede6e1 100644 --- a/SteamTarget/SteamTargetRenderer.h +++ b/SteamTarget/SteamTargetRenderer.h @@ -61,6 +61,12 @@ private: void loadLogo(); + static LRESULT WINAPI HookCallback(int nCode, WPARAM wParam, LPARAM lParam); + + static void unhookBindings(); + + static BOOL WINAPI ConsoleCtrlCallback(_In_ DWORD dwCtrlType); + std::atomic bRunLoop = true; bool bUseDesktopConfig = false; @@ -83,7 +89,6 @@ private: #endif static std::atomic overlayOpen; static HHOOK hook; - static LRESULT WINAPI HookCallback(int nCode, WPARAM wParam, LPARAM lParam); HWND hwForeGroundWindow = nullptr; bool bNeedFocusSwitch = false; @@ -99,8 +104,6 @@ private: std::unique_ptr spriteTexture; sf::Sprite backgroundSprite; - static BOOL WINAPI ConsoleCtrlCallback(_In_ DWORD dwCtrlType); - const QString LaunchGame = "LaunchGame"; const QString LaunchedProcessFinished = "LaunchedProcessFinished"; const QString IsSteamHooked = "IsSteamHooked";