diff options
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index 7270504..f7a1438 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -158,6 +158,36 @@ void WriteGameExes() ofs.close();
}
+PROCESS_INFORMATION StartOBS()
+{
+ PROCESS_INFORMATION pi;
+ STARTUPINFOA sui;
+ GetStartupInfoA(&sui);
+ CreateProcessA(nullptr, "C:\\Program Files\\obs-studio\\bin\\64bit\\obs64.exe --disable-shutdown-check",
+ 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 +219,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 +238,16 @@ 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_CLOSE].push_back([&pi_obs](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
+ StopOBS(pi_obs);
});
lay_context *ctx = &window.ctx;
|
