Skip to main content

ib_shell_item/
lib.rs

1/*!
2A library for operating file system files / Windows Shell items.
3
4## Features
5- Shell item ID list (path): `AbsoluteIDList`, `RelativeIDList`, `ChildID` and their `Ref` variants; `IPersistIDList`.
6- Shell folder: `IShellFolder`.
7- Shell item: `IShellItem`, `IShellItem2`.
8- Property System: `IPropertySystem`, `IPropertyStore`, `FSColumn`.
9- Hooking
10  - Hook item display name.
11  - Display folder size with bar graph from Everything.
12- COM string utilities.
13
14## Crate features
15*/
16#![cfg_attr(docsrs, feature(doc_cfg))]
17#![cfg_attr(feature = "doc", doc = document_features::document_features!())]
18#![cfg_attr(feature = "hook", feature(sync_unsafe_cell))]
19use windows::{
20    Win32::System::Com::{COINIT_APARTMENTTHREADED, CoInitializeEx},
21    core::HRESULT,
22};
23
24pub mod folder;
25#[cfg(feature = "hook")]
26pub mod hook;
27pub mod id_list;
28mod item;
29pub mod path;
30pub mod prop;
31pub mod string;
32
33pub use item::*;
34
35pub fn init() -> HRESULT {
36    unsafe { CoInitializeEx(None, COINIT_APARTMENTTHREADED) }
37}