Repository navigation
Usage Guide
Right-click capture_bypass_gui.exe → Run as administrator. Administrator privileges are required for OpenProcess to open handles to other processes.
The app requests UAC elevation automatically via its embedded manifest — you will see a UAC prompt on launch.
The main panel shows every visible, titled window on the system, refreshed every 500 ms in the background.
| Column | Description |
|---|---|
| PID | Process ID |
| Process | Executable filename with its extracted icon. An orange 32 badge means the process is 32-bit. |
| Window Title | Title bar text, truncated if long |
| Status | Live protection state (see below) |
| Action | Strip Protection button for that row |
Click any column header to sort the list ascending ▲; click again to reverse ▼. The current sort column and direction are saved to config and restored on next launch.
| Badge | Meaning |
|---|---|
| 🔴 PROTECTED |
WDA_EXCLUDEFROMCAPTURE — window appears black in OBS |
| 🟡 MONITOR |
WDA_MONITOR — protected from screen capture to secondary monitors |
| 🟢 OK |
WDA_NONE — window is fully capturable |
Each row displays the 16×16 icon of the executable as Windows would show it in Explorer. Icons are extracted once per process name and cached for the session. If the icon cannot be extracted (e.g. no file found, system process), the column is left blank.
Forces an immediate re-enumeration of all windows. The background thread refreshes automatically every 500 ms, so this is only needed if you want an instant update.
One click injects into every currently-protected PID. Deduplicates so each process is injected only once, even if it owns multiple protected windows. Browser processes automatically have their child processes injected too.
Switches between injection modes. See Injection Modes for details.
- ⚡ One-shot (default) — strips once and exits
- 🔁 Persistent — re-strips every 500 ms for the process lifetime
Toggles a background thread that silently strips any newly protected window. See System Tray & Auto-inject for full details. When active, newly protected windows are stripped without any manual interaction; if 🔔 Toasts is also enabled, a desktop notification fires for each auto-strip.
Enables Windows desktop toast notifications whenever the auto-inject thread silently strips a process. Each toast shows the process name and window title. Toasts are only sent by the background thread — manual Strip Protection clicks do not trigger them.
Registers Ctrl+Shift+B as a global hotkey. Pressing it at any time — even when the app is minimised to tray — strips all currently protected windows, identical to clicking ⚡ Strip All Protected. Click the button again to unregister the hotkey. The hotkey state is saved to config.
Opens the built-in help panel — a sidebar with 7 sections covering all features. The wiki you're reading now mirrors and expands on that content.
Launches stress_tester.exe, a dedicated test window for verifying injection end-to-end. See Testing for full details.
When a newer GitHub release is detected on startup, a 🆕 v{x.y.z} available button appears in the header. Clicking it opens the Releases page in your default browser. No automatic update is performed — it is a notification only. The check runs once per launch in a background thread.
- Filter text box — live search by window title, process name, or PID. Filtering is case-insensitive.
- ✕ button — clears the filter.
- Protected only checkbox — hides all rows where Status is OK. Useful when many windows are open.
The Watch bar lets you pin one or more process names for targeted auto-injection, independently of the global auto-inject toggle.
- Type a process name (e.g.
vlc.exe) in the text box and press Enter or click + Add. - Any time a process matching that name appears on the system, its windows are stripped automatically.
- Remove a name by clicking ✕ next to it in the watch list.
- Watch names are saved to config and restored on next launch.
Note: When global 🤖 Auto-inject is enabled it covers all protected windows, making watch mode redundant. Watch mode is most useful when you only want to target specific known applications without running auto-inject globally.
Click 📋 Log to open the injection log panel at the bottom of the window. The panel shows a timestamped, scrollable history of every strip attempt and its result:
- Green entries — injection succeeded
- Red entries — injection failed, with an error message
The log persists for the session. Closing and reopening the panel does not clear it. The panel's open/closed state is saved to config.
Adds (or removes) a Windows startup entry so capture-bypass launches automatically at every login.
Clicking the button writes capture-bypass into HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Clicking it again removes the entry. The button reflects the real registry state on every launch.
UAC note: because the app requires Administrator rights, Windows will show a UAC elevation prompt each time it auto-launches at startup. This is unavoidable — simply click Yes to allow it. The option can also be enabled during installer setup.
See System Tray & Auto-inject for more details.
The bottom bar shows the result of the last action with a timestamp:
- Green — injection succeeded
- Red — injection failed (error message included)
- Gray — neutral info (mode change, refresh, etc.)
The right side shows a live count: N windows • N protected • N 32-bit.
Click the ⚙ Settings button in the header to open the Settings window. Everything here is saved to config and restored on next launch.
| Setting | What it does |
|---|---|
| 🚀 Start with Windows | Adds/removes a startup registry entry so the app launches at login |
| 🔔 Toast notifications | Enables Windows desktop notifications for auto-inject strips |
| ⌨ Ctrl+Shift+B | Registers/unregisters the global hotkey |
| 🗕 Minimize to tray on close | ON = ✕ hides to tray; OFF = ✕ exits the app |
| 📋 Injection log file | Appends a timestamped line to injection.log for every strip attempt |
When enabled, every injection result (success or failure) is logged to %APPDATA%\capture-bypass\injection.log with a UTC timestamp and the mode that was used. The file is created automatically the first time something gets logged.
Click Open log file in the Settings window to open it directly in Explorer. Useful if you want a record of what got stripped and when.
All UI state is saved automatically to %APPDATA%\capture-bypass\config.toml after every change and restored on next launch. Settings saved include: injection mode, auto-inject, protected-only filter, toast notifications, hotkey, log panel visibility, watch names, sort column, tray behavior, and injection log file toggle.
- Launch the app as Administrator.
- Open the application you want to capture (e.g. a DRM video player, a game).
- The protected window appears with a 🔴 PROTECTED badge.
- Click Strip Protection on that row. The badge should flip to 🟢 OK within one 500 ms cycle.
- Start your screen capture in OBS — the window is now visible.
If the target re-applies protection after a few seconds, switch to 🔁 Persistent mode and inject again. If you want completely hands-free operation, enable 🤖 Auto-inject and minimise to tray. Enable 🚀 Start with Windows so the app is ready the next time you boot. Add the process name to the Watch bar if you want targeted injection without running auto-inject globally.