Skip to main content

windows_erg/desktop/
mod.rs

1//! Desktop window and tray icon operations.
2//!
3//! This module provides:
4//! - Window enumeration for top-level and child windows
5//! - Query helpers for visibility, title, class, rectangle, and cloaked state
6//! - Notification area (tray) icon lifecycle and balloon notifications
7
8mod tray;
9mod types;
10mod windows;
11
12pub use tray::{TrayIcon, TrayIconBuilder, TrayNotification};
13pub use types::{BalloonIcon, CloakState, TrayIconId, WindowHandle, WindowInfo, WindowRect};
14
15use crate::Result;
16
17/// Enumerate desktop windows (top-level and child windows).
18pub fn enumerate_windows() -> Result<Vec<WindowInfo>> {
19    windows::enumerate_windows()
20}
21
22/// Enumerate desktop windows (top-level and child windows) with a reusable output buffer.
23///
24/// Returns the number of windows added to the output buffer.
25pub fn enumerate_windows_with_buffer(out_windows: &mut Vec<WindowInfo>) -> Result<usize> {
26    windows::enumerate_windows_with_buffer(out_windows)
27}
28
29/// Enumerate desktop windows (top-level and child windows) with in-enumeration filtering.
30///
31/// Returns the number of windows added to the output buffer.
32pub fn enumerate_windows_with_filter<F>(
33    out_windows: &mut Vec<WindowInfo>,
34    filter: F,
35) -> Result<usize>
36where
37    F: Fn(&WindowInfo) -> bool,
38{
39    windows::enumerate_windows_with_filter(out_windows, filter)
40}
41
42/// Enumerate child windows for a specific parent window.
43pub fn enumerate_child_windows(parent: WindowHandle) -> Result<Vec<WindowInfo>> {
44    windows::enumerate_child_windows(parent)
45}
46
47/// Enumerate child windows for a specific parent window with a reusable output buffer.
48///
49/// Returns the number of windows added to the output buffer.
50pub fn enumerate_child_windows_with_buffer(
51    parent: WindowHandle,
52    out_windows: &mut Vec<WindowInfo>,
53) -> Result<usize> {
54    windows::enumerate_child_windows_with_buffer(parent, out_windows)
55}
56
57/// Enumerate child windows for a specific parent window with in-enumeration filtering.
58///
59/// Returns the number of windows added to the output buffer.
60pub fn enumerate_child_windows_with_filter<F>(
61    parent: WindowHandle,
62    out_windows: &mut Vec<WindowInfo>,
63    filter: F,
64) -> Result<usize>
65where
66    F: Fn(&WindowInfo) -> bool,
67{
68    windows::enumerate_child_windows_with_filter(parent, out_windows, filter)
69}