diff options
| author | patrick-scho | 2025-11-04 17:08:59 +0100 |
|---|---|---|
| committer | patrick-scho | 2025-11-04 17:08:59 +0100 |
| commit | 76f6b33f9a078626bbcd4b66d25b20fc501d181a (patch) | |
| tree | 496044ffa62d691cc3aab2a35b9f09ada3962180 /src/main.cpp | |
| parent | 20b46fb7ea34b0241a40f7565a9db8c0656da01e (diff) | |
| download | autorec-76f6b33f9a078626bbcd4b66d25b20fc501d181a.tar.gz autorec-76f6b33f9a078626bbcd4b66d25b20fc501d181a.zip | |
start obs manually
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index 7270504..5e6eba3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -158,6 +158,40 @@ void WriteGameExes() ofs.close();
}
+PROCESS_INFORMATION StartOBS()
+{
+ // delete .sentinel folder to stop obs from displaying
+ // error message on startup
+ system("del %appdata%\\obs-studio\\.sentinel /Q");
+
+ PROCESS_INFORMATION pi;
+ STARTUPINFOA sui;
+ GetStartupInfoA(&sui);
+ CreateProcessA(nullptr, "C:\\Program Files\\obs-studio\\bin\\64bit\\obs64.exe",
+ nullptr, nullptr, false, NORMAL_PRIORITY_CLASS, nullptr, "C:\\Program Files\\obs-studio\\bin\\64bit", &sui, &pi);
+ return pi;
+}
+
+void StopOBS(PROCESS_INFORMATION &pi)
+{
+ EnumWindows([](HWND hwnd, LPARAM lParam) -> BOOL {
+ PROCESS_INFORMATION *pi = (PROCESS_INFORMATION*)lParam;
+
+ DWORD pid, tid;
+ tid = GetWindowThreadProcessId(hwnd, &pid);
+ if (tid == pi->dwThreadId && pid == pi->dwProcessId) {
+
+ char title[1024]; GetWindowTextA(hwnd, title, 1024);
+
+ if (strncmp(title, "OBS", 3) == 0) {
+ PostMessage(hwnd, WM_CLOSE, 0, 0);
+ return FALSE;
+ }
+ }
+ return TRUE;
+ }, (LPARAM)&pi);
+}
+
/*
TODO:
- Disconnect while recording
@@ -189,6 +223,8 @@ WinMain(HINSTANCE hInstance, niData.uCallbackMessage = ICON_MSG;
niData.uVersion = NOTIFYICON_VERSION_4;
+ PROCESS_INFORMATION pi_obs = StartOBS();
+
window.handlers[WM_SIZE].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (wParam == SIZE_MINIMIZED) {
ShowNotificationIcon();
@@ -206,11 +242,18 @@ WinMain(HINSTANCE hInstance, SetActiveWindow(hwnd);
}
});
-
window.handlers[WM_GETMINMAXINFO].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
- MINMAXINFO *mmInfo = (MINMAXINFO*)lParam;
- mmInfo->ptMinTrackSize.x = 400;
- mmInfo->ptMinTrackSize.y = 200;
+ MINMAXINFO *mmInfo = (MINMAXINFO*)lParam;
+ mmInfo->ptMinTrackSize.x = 400;
+ mmInfo->ptMinTrackSize.y = 200;
+ });
+ window.handlers[WM_QUERYENDSESSION].push_back([&pi_obs](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
+ StopOBS(pi_obs);
+ }); window.handlers[WM_ENDSESSION].push_back([&pi_obs](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
+ StopOBS(pi_obs);
+ });
+ window.handlers[WM_CLOSE].push_back([&pi_obs](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
+ StopOBS(pi_obs);
});
lay_context *ctx = &window.ctx;
|
