multi_select/
multi_select.rs1use win_context_menu::{init_com, ContextMenu, ShellItems};
2
3fn main() -> win_context_menu::Result<()> {
4 let _com = init_com()?;
5
6 let args: Vec<String> = std::env::args().skip(1).collect();
7 let paths: Vec<String> = if args.is_empty() {
8 vec![
9 r"C:\Windows\notepad.exe".to_string(),
10 r"C:\Windows\regedit.exe".to_string(),
11 ]
12 } else {
13 args
14 };
15
16 println!("Showing context menu for {} items:", paths.len());
17 for p in &paths {
18 println!(" - {}", p);
19 }
20
21 let items = ShellItems::from_paths(&paths)?;
22 let menu = ContextMenu::new(items)?;
23
24 match menu.show()? {
25 Some(selected) => {
26 println!(
27 "Selected: {} (verb: {:?})",
28 selected.menu_item().label,
29 selected.menu_item().command_string
30 );
31 selected.execute()?;
32 }
33 None => println!("No item selected."),
34 }
35
36 Ok(())
37}