mirror of
https://github.com/Mylloon/obs-replay-folders.git
synced 2024-11-10 02:07:01 +01:00
chore: substring path starting from end, publish c file
This commit is contained in:
parent
a47230c35b
commit
9eede46b61
3 changed files with 101 additions and 9 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,5 +1,5 @@
|
||||||
*.c
|
|
||||||
*.cmd
|
*.cmd
|
||||||
|
*.zip
|
||||||
|
|
||||||
# Compiled Lua sources
|
# Compiled Lua sources
|
||||||
luac.out
|
luac.out
|
||||||
|
|
|
@ -49,19 +49,16 @@ function get_running_game_title()
|
||||||
if len == 0 then
|
if len == 0 then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
local title = ""
|
|
||||||
local i = 1
|
|
||||||
local max = len - 4
|
local max = len - 4
|
||||||
while i <= max do
|
local i = max
|
||||||
|
while i > 1 do
|
||||||
local char = result:sub(i, i)
|
local char = result:sub(i, i)
|
||||||
if char == "\\" then
|
if char == "\\" then
|
||||||
title = ""
|
break
|
||||||
else
|
|
||||||
title = title .. char
|
|
||||||
end
|
end
|
||||||
i = i + 1
|
i = i - 1
|
||||||
end
|
end
|
||||||
return title
|
return result:sub(i + 1, max)
|
||||||
end
|
end
|
||||||
|
|
||||||
function move(path, folder)
|
function move(path, folder)
|
||||||
|
|
95
detect_game.c
Normal file
95
detect_game.c
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||||
|
DWORD ul_reason_for_call,
|
||||||
|
LPVOID lpReserved
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch (ul_reason_for_call)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
case DLL_THREAD_ATTACH:
|
||||||
|
case DLL_THREAD_DETACH:
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <Windows.h>
|
||||||
|
#include <Psapi.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define MAX_TITLE_LENGTH 256
|
||||||
|
static const char prefix[] = "C:\\Windows\\";
|
||||||
|
static const char gameBarExe[] = "GameBar.exe";
|
||||||
|
|
||||||
|
BOOL TestFullscreen(HWND hwnd) {
|
||||||
|
WINDOWPLACEMENT wp;
|
||||||
|
wp.length = sizeof(WINDOWPLACEMENT);
|
||||||
|
if (!GetWindowPlacement(hwnd, &wp))
|
||||||
|
return FALSE;
|
||||||
|
if (IsZoomed(hwnd))
|
||||||
|
return TRUE;
|
||||||
|
RECT rcDesktop;
|
||||||
|
GetClientRect(GetDesktopWindow(), &rcDesktop);
|
||||||
|
return (wp.rcNormalPosition.left <= rcDesktop.left &&
|
||||||
|
wp.rcNormalPosition.top <= rcDesktop.top &&
|
||||||
|
wp.rcNormalPosition.right >= rcDesktop.right &&
|
||||||
|
wp.rcNormalPosition.bottom >= rcDesktop.bottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConvertTCHARToChar(const TCHAR* source, char* dest, size_t destSize) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
wcstombs_s(NULL, dest, destSize, source, _TRUNCATE);
|
||||||
|
#else
|
||||||
|
wcstombs(dest, source, destSize);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
__declspec(dllexport) int get_running_fullscreen_game_path(char* buffer, int bufferSize) {
|
||||||
|
HWND hwnd = NULL;
|
||||||
|
while ((hwnd = FindWindowEx(NULL, hwnd, NULL, NULL)) != NULL) {
|
||||||
|
if (TestFullscreen(hwnd)) {
|
||||||
|
TCHAR windowTitle[MAX_TITLE_LENGTH];
|
||||||
|
GetWindowText(hwnd, windowTitle, MAX_TITLE_LENGTH);
|
||||||
|
|
||||||
|
DWORD processId;
|
||||||
|
GetWindowThreadProcessId(hwnd, &processId);
|
||||||
|
|
||||||
|
HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, processId);
|
||||||
|
if (hProcess == NULL) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
TCHAR executablePath[MAX_PATH];
|
||||||
|
if (GetModuleFileNameEx(hProcess, NULL, executablePath, MAX_PATH) == 0) {
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
size_t exe_bufferSize = sizeof(executablePath) / sizeof(executablePath[0]);
|
||||||
|
|
||||||
|
char* charPath = (char*)malloc(exe_bufferSize);
|
||||||
|
|
||||||
|
ConvertTCHARToChar(executablePath, charPath, exe_bufferSize);
|
||||||
|
int result = strncmp(charPath, prefix, 11);
|
||||||
|
if (result == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = strcmp(charPath + strlen(charPath) - 11, gameBarExe);
|
||||||
|
if (result == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy_s(buffer, bufferSize, charPath); // Use charPath as a regular char array
|
||||||
|
free(charPath);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
Loading…
Reference in a new issue