Add window-based target picker as the default; process list goes advanced

New host/src/inject/window_list.{hpp,cpp} enumerates visible, titled, non-tool
top-level (alt-tab-style) windows via EnumWindows -- root-owner only, our own
process excluded -- and maps each to its owning pid + image name. The Injection
panel now defaults to this window list (each row "title [process.exe pid]", with a
filter over title or process), since there are far fewer windows than processes and
a window maps straight to the HWND the capturer wants. The full process list stays
as the advanced picker under Debug details.

Verified live: launched the host and captured its window -- the picker lists real
windows (Discord/Firefox/Explorer/...) in "title [exe pid]" form, filter present,
and the host's own window correctly excluded. x64 build green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 01:14:05 +02:00
parent b0f78312c6
commit 80cc5e72bd
6 changed files with 159 additions and 23 deletions

View File

@@ -10,6 +10,7 @@ add_executable(coop_host WIN32
src/ui/app_chrome.cpp
src/input/xinput_source.cpp
src/inject/process_list.cpp
src/inject/window_list.cpp
src/inject/injector.cpp
src/ipc/ipc_server.cpp
src/capture/frame_renderer.cpp