diff --git a/libs/cua-driver/rust/crates/platform-windows/src/win32/windows.rs b/libs/cua-driver/rust/crates/platform-windows/src/win32/windows.rs index b13588d..b0bccf5 100644 --- a/libs/cua-driver/rust/crates/platform-windows/src/win32/windows.rs +++ b/libs/cua-driver/rust/crates/platform-windows/src/win32/windows.rs @@ -281,14 +281,26 @@ fn window_info_by_handle(hwnd: u64) -> Option { return None; } let title_len = unsafe { GetWindowTextLengthW(native) }; - if title_len == 0 { + // An exact PID/HWND remains a valid identity for untitled native shell + // surfaces. Keep ordinary application/overlay discovery filters intact. + let untitled_shell = matches!( + window_class_name(native).as_str(), + "Shell_TrayWnd" + | "Shell_SecondaryTrayWnd" + | "NotifyIconOverflowWindow" + | "TopLevelWindowForOverflowXamlIsland" + | "#32768" + | "Progman" + | "WorkerW" + ); + if title_len == 0 && !untitled_shell { return None; } let mut buf = vec![0u16; (title_len + 1) as usize]; unsafe { GetWindowTextW(native, &mut buf) }; let title_len = buf.iter().position(|&c| c == 0).unwrap_or(buf.len()); let title = String::from_utf16_lossy(&buf[..title_len]); - if title.trim().is_empty() { + if title.trim().is_empty() && !untitled_shell { return None; } let minimized = unsafe { IsIconic(native) }.as_bool();