SteamTarget: Fix Unhooking

experimental
Peter Repukat 8 years ago
parent 7d02ef4e6f
commit 31791049bf

@ -112,6 +112,7 @@ void SteamTargetRenderer::run()
void SteamTargetRenderer::stop() void SteamTargetRenderer::stop()
{ {
bRunLoop = false; bRunLoop = false;
unhookBindings();
QApplication::exit(0); QApplication::exit(0);
} }
@ -368,22 +369,27 @@ LRESULT WINAPI SteamTargetRenderer::HookCallback(int nCode, WPARAM wParam, LPARA
return CallNextHookEx(hook, nCode, wParam, lParam); 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) BOOL SteamTargetRenderer::ConsoleCtrlCallback(DWORD dwCtrlType)
{ {
if (dwCtrlType == CTRL_CLOSE_EVENT || dwCtrlType == CTRL_BREAK_EVENT || dwCtrlType == CTRL_C_EVENT) if (dwCtrlType == CTRL_CLOSE_EVENT || dwCtrlType == CTRL_BREAK_EVENT || dwCtrlType == CTRL_C_EVENT)
{ {
if (bHookSteam) unhookBindings();
{
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();
}
return true; return true;
} }

@ -61,6 +61,12 @@ private:
void loadLogo(); void loadLogo();
static LRESULT WINAPI HookCallback(int nCode, WPARAM wParam, LPARAM lParam);
static void unhookBindings();
static BOOL WINAPI ConsoleCtrlCallback(_In_ DWORD dwCtrlType);
std::atomic<bool> bRunLoop = true; std::atomic<bool> bRunLoop = true;
bool bUseDesktopConfig = false; bool bUseDesktopConfig = false;
@ -83,7 +89,6 @@ private:
#endif #endif
static std::atomic<bool> overlayOpen; static std::atomic<bool> overlayOpen;
static HHOOK hook; static HHOOK hook;
static LRESULT WINAPI HookCallback(int nCode, WPARAM wParam, LPARAM lParam);
HWND hwForeGroundWindow = nullptr; HWND hwForeGroundWindow = nullptr;
bool bNeedFocusSwitch = false; bool bNeedFocusSwitch = false;
@ -99,8 +104,6 @@ private:
std::unique_ptr<sf::Texture> spriteTexture; std::unique_ptr<sf::Texture> spriteTexture;
sf::Sprite backgroundSprite; sf::Sprite backgroundSprite;
static BOOL WINAPI ConsoleCtrlCallback(_In_ DWORD dwCtrlType);
const QString LaunchGame = "LaunchGame"; const QString LaunchGame = "LaunchGame";
const QString LaunchedProcessFinished = "LaunchedProcessFinished"; const QString LaunchedProcessFinished = "LaunchedProcessFinished";
const QString IsSteamHooked = "IsSteamHooked"; const QString IsSteamHooked = "IsSteamHooked";

Loading…
Cancel
Save