Skip to content

Instantly share code, notes, and snippets.

@AngelMunoz
Last active May 24, 2020 13:20
Show Gist options
  • Save AngelMunoz/0da0ffe0eeb0a3661f7f33339b727a1f to your computer and use it in GitHub Desktop.
Save AngelMunoz/0da0ffe0eeb0a3661f7f33339b727a1f to your computer and use it in GitHub Desktop.
Small sample of the Rust/WinRT API projection https://github.com/microsoft/winrt-rs
winrt::import!(
dependencies
os
modules
"windows.foundation"
"windows.system.power"
);
use windows::system::power::*;
fn battery_status() -> std::string::String {
let battery_status = PowerManager::battery_status().unwrap();
let result = match battery_status {
BatteryStatus::Charging => "Charging",
BatteryStatus::Discharging => "Discharging",
BatteryStatus::Idle => "Idle",
BatteryStatus::NotPresent => "NotPresent",
_ => "Unknown",
};
String::from(result)
}
fn energy_saver_status() -> std::string::String {
let energy_saver_status = PowerManager::energy_saver_status().unwrap();
let result = match energy_saver_status {
EnergySaverStatus::On => "On",
EnergySaverStatus::Off => "Off",
EnergySaverStatus::Disabled => "Disabled",
_ => "Unknown",
};
String::from(result)
}
fn power_supply_status() -> std::string::String {
let power_supply_status = PowerManager::power_supply_status().unwrap();
let result = match power_supply_status {
PowerSupplyStatus::Adequate => "Adequate",
PowerSupplyStatus::Inadequate => "Inadequate",
PowerSupplyStatus::NotPresent => "NotPresent",
_ => "Unknown",
};
String::from(result)
}
fn main() {
type EvHandler = windows::foundation::EventHandler<winrt::Object>;
PowerManager::battery_status_changed(EvHandler::new(|_sender, _args| {
let status = battery_status();
let msg = format!("{} - {}", "battery_status", status);
println!("{}", msg);
Ok({})
}))
.unwrap();
PowerManager::energy_saver_status_changed(EvHandler::new(|_sender, _args| {
let status = energy_saver_status();
let msg = format!("{} - {}", "energy_saver_status", status);
println!("{}", msg);
Ok({})
}))
.unwrap();
PowerManager::power_supply_status_changed(EvHandler::new(|_sender, _args| {
let status = power_supply_status();
let msg = format!("{} - {}", "power_supply_status", status);
println!("{}", msg);
Ok({})
}))
.unwrap();
let status = battery_status();
let msg = format!("{} - {}", "battery_status", status);
println!("{}", msg);
let status = energy_saver_status();
let msg = format!("{} - {}", "energy_saver_status", status);
println!("{}", msg);
let status = power_supply_status();
let msg = format!("{} - {}", "power_supply_status", status);
println!("{}", msg);
loop {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment