pull/130/head
Peter Repukat 3 years ago
parent 4ae430b813
commit 7559eee8c2

@ -24,26 +24,12 @@ limitations under the License.
#include <spdlog/spdlog.h>
#include <vdf_parser.hpp>
#include <subhook.h>
#ifdef _WIN32
subhook::Hook getFgWinHook;
static HWND target_hwnd = nullptr;
HWND keepForegroundWindow()
{
return target_hwnd;
}
#endif
SteamTarget::SteamTarget(int argc, char* argv[])
: window_([this] { run_ = false; }, getScreenshotHotkey()),
detector_([this](bool overlay_open) { onOverlayChanged(overlay_open); }), target_window_handle_(window_.getSystemHandle())
detector_([this](bool overlay_open) { onOverlayChanged(overlay_open); })
{
#ifdef _WIN32
target_hwnd = target_window_handle_;
#endif
target_window_handle_ = window_.getSystemHandle();
}
int SteamTarget::run()
@ -216,7 +202,7 @@ void SteamTarget::keepControllerConfig(bool keep)
#ifdef _WIN32
if (keep && !getFgWinHook.IsInstalled()) {
spdlog::debug("Hooking GetForegroudnWindow (in own process)");
getFgWinHook.Install(&GetForegroundWindow, &keepForegroundWindow, subhook::HookFlags::HookFlag64BitOffset);
getFgWinHook.Install(&GetForegroundWindow, &keepFgWindowHookFn, subhook::HookFlags::HookFlag64BitOffset);
if (!getFgWinHook.IsInstalled()) {
spdlog::error("Couldn't install GetForegroundWindow hook!");
}
@ -231,6 +217,13 @@ void SteamTarget::keepControllerConfig(bool keep)
#endif
}
#ifdef _WIN32
HWND SteamTarget::keepFgWindowHookFn()
{
return target_window_handle_;
}
#endif
void SteamTarget::overlayHotkeyWorkaround()
{
static bool pressed = false;

@ -22,6 +22,7 @@ limitations under the License.
#ifdef _WIN32
#include "HidHide.h"
#include "InputRedirector.h"
#include <subhook.h>
#endif
#include <filesystem>
@ -46,6 +47,12 @@ class SteamTarget {
// Keep controllerConfig even is window is switched.
// On Windoze hooking "GetForeGroundWindow" is enough;
void keepControllerConfig(bool keep);
#ifdef _WIN32
static HWND keepFgWindowHookFn();
static inline subhook::Hook getFgWinHook;
#endif
/*
* Run once per frame
* detects steam configured overlay hotkey, and simulates key presses to window
@ -64,7 +71,7 @@ class SteamTarget {
TargetWindow window_;
OverlayDetector detector_;
WindowHandle last_foreground_window_ = nullptr;
WindowHandle target_window_handle_;
static inline WindowHandle target_window_handle_ = nullptr;
static constexpr std::wstring_view user_data_path_ = L"/userdata/";
static constexpr std::wstring_view config_file_name_ = L"/config/localconfig.vdf";

Loading…
Cancel
Save