window_enumerator/lib.rs
1//! A powerful Windows window enumeration and inspection library.
2//!
3//! This crate provides advanced capabilities for discovering, filtering, sorting,
4//! and selecting Windows windows with various criteria.
5//!
6//! # Features
7//!
8//! - **Window Enumeration**: Discover all visible windows on the system
9//! - **Advanced Filtering**: Filter windows by PID, title, class name, process name, and file path
10//! - **Sorting**: Sort windows by PID, title, or position (with `sorting` feature)
11//! - **Selection**: Select specific windows by index (with `selection` feature)
12//!
13//! # Examples
14//!
15//! ```no_run
16//! use window_enumerator::{WindowEnumerator, FilterCriteria};
17//!
18//! let mut enumerator = WindowEnumerator::new();
19//! enumerator.enumerate_all_windows().unwrap();
20//!
21//! // Find Chrome windows using filter
22//! let criteria = FilterCriteria {
23//! title_contains: Some("Chrome".to_string()),
24//! ..Default::default()
25//! };
26//! let chrome_windows = enumerator.filter_windows(&criteria);
27//! for window in chrome_windows {
28//! window.print_compact();
29//! }
30//!
31//! // Use filtering criteria
32//! let criteria = FilterCriteria {
33//! title_contains: Some("Notepad".to_string()),
34//! ..Default::default()
35//! };
36//! let notepad_windows = enumerator.filter_windows(&criteria);
37//! ```
38//!
39//! # Cargo Features
40//!
41//! - `windows`: Enables Windows API functionality (enabled by default)
42//! - `sorting`: Enables window sorting capabilities
43//! - `selection`: Enables window selection by indices
44
45#![warn(missing_docs)]
46
47mod errors;
48mod models;
49mod types;
50mod utils;
51
52#[cfg(feature = "windows")]
53mod enumerator;
54
55pub use errors::*;
56pub use models::*;
57pub use types::*;
58
59// 公开导出工具函数
60#[cfg(feature = "selection")]
61pub use utils::parse_selection;
62
63#[cfg(feature = "sorting")]
64pub use utils::parse_position_sort;
65
66#[cfg(feature = "windows")]
67pub use enumerator::*;