ofs.close();\r
}\r
\r
+PROCESS_INFORMATION StartOBS()\r
+{\r
+ PROCESS_INFORMATION pi;\r
+ STARTUPINFOA sui;\r
+ GetStartupInfoA(&sui);\r
+ CreateProcessA(nullptr, "C:\\Program Files\\obs-studio\\bin\\64bit\\obs64.exe --disable-shutdown-check",\r
+ nullptr, nullptr, false, NORMAL_PRIORITY_CLASS, nullptr, "C:\\Program Files\\obs-studio\\bin\\64bit", &sui, &pi);\r
+ return pi;\r
+}\r
+\r
+void StopOBS(PROCESS_INFORMATION &pi)\r
+{\r
+ EnumWindows([](HWND hwnd, LPARAM lParam) -> BOOL {\r
+ PROCESS_INFORMATION *pi = (PROCESS_INFORMATION*)lParam;\r
+\r
+ DWORD pid, tid;\r
+ tid = GetWindowThreadProcessId(hwnd, &pid);\r
+ if (tid == pi->dwThreadId && pid == pi->dwProcessId) {\r
+\r
+ char title[1024]; GetWindowTextA(hwnd, title, 1024);\r
+\r
+ if (strncmp(title, "OBS", 3) == 0) {\r
+ PostMessage(hwnd, WM_CLOSE, 0, 0);\r
+ return FALSE; \r
+ }\r
+ }\r
+ return TRUE;\r
+ }, (LPARAM)&pi);\r
+}\r
+\r
/*\r
TODO:\r
- Disconnect while recording\r
niData.uCallbackMessage = ICON_MSG;\r
niData.uVersion = NOTIFYICON_VERSION_4;\r
\r
+ PROCESS_INFORMATION pi_obs = StartOBS();\r
+\r
window.handlers[WM_SIZE].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
if (wParam == SIZE_MINIMIZED) {\r
ShowNotificationIcon();\r
SetActiveWindow(hwnd);\r
}\r
});\r
-\r
window.handlers[WM_GETMINMAXINFO].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
- MINMAXINFO *mmInfo = (MINMAXINFO*)lParam;\r
- mmInfo->ptMinTrackSize.x = 400;\r
- mmInfo->ptMinTrackSize.y = 200;\r
+ MINMAXINFO *mmInfo = (MINMAXINFO*)lParam;\r
+ mmInfo->ptMinTrackSize.x = 400;\r
+ mmInfo->ptMinTrackSize.y = 200;\r
+ });\r
+ window.handlers[WM_QUERYENDSESSION].push_back([&pi_obs](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
+ StopOBS(pi_obs);\r
+ });\r
+ window.handlers[WM_CLOSE].push_back([&pi_obs](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
+ StopOBS(pi_obs);\r
});\r
\r
lay_context *ctx = &window.ctx;\r