今天写了一个关屏锁屏的app代替电源键短按功能。

我这老手机的电源键都快被我按坏了,所以写这个app来代替电源键的短按锁屏熄屏。
这个app首次运行时会要求激活设备管理权限,按提示操作即可,也可以手动激活它:设置-〉安全-〉设备管理者,勾上ScreenOff。
卸载时则要求将它反激活,步骤一样。

首次安装好后会自动熄屏,以后每次点击这个app的图标就能熄屏了。

下载链接: http://pan.baidu.com/s/1dF3KWJR 

csdn下载链接:刚提交,正在审核中。

我还想做一个摇一摇就唤醒手机的功能,再次减轻电源键的负担。
以下是一个简单的 Rust 程序,可以在 Windows 操作系统下实现在开屏时每分钟更换一次壁纸的功能。但是在关屏时进入睡眠状态的部分需要操作系统的支持,因此需要额外的系统调用。代码如下: ```rust #[cfg(windows)] use winapi::um::powrprof::{SetSuspendState, SYSTEM_POWER_STATE}; use std::{thread, time}; use std::path::Path; use std::fs; use std::io; use std::process::Command; fn main() { // 壁纸文件夹路径 let wallpaper_folder = "C:/Users/username/Pictures/Wallpapers"; // 获取壁纸文件列表 let wallpaper_files = match fs::read_dir(&wallpaper_folder) { Ok(files) => files, Err(e) => { eprintln!("Failed to read wallpaper folder: {}", e); return; } }; // 将壁纸文件路径收集到一个 vector 中 let mut wallpapers = Vec::new(); for file in wallpaper_files { if let Ok(file) = file { if let Some(extension) = file.path().extension() { if extension == "jpg" || extension == "jpeg" || extension == "png" { wallpapers.push(file.path()); } } } } // 如果没有找到壁纸文件,则退出程序 if wallpapers.is_empty() { eprintln!("No wallpaper files found in folder"); return; } // 循环切换壁纸 let mut index = 0; loop { set_wallpaper(&wallpapers[index]); index = (index + 1) % wallpapers.len(); // 等待 1 分钟 thread::sleep(time::Duration::from_secs(60)); } } // 设置壁纸 fn set_wallpaper(path: &Path) { if let Some(extension) = path.extension() { let program = match extension.to_str() { Some("jpg") | Some("jpeg") => "C:/Windows/System32/rundll32.exe", Some("png") => "C:/Windows/System32/microsoft.photos.exe", _ => return, }; let args = match program { "C:/Windows/System32/rundll32.exe" => { let dll_path = "C:/Windows/System32/shell32.dll"; let command = format!("{} {}`,0", path.display(), dll_path); vec![dll_path, &command] } "C:/Windows/System32/microsoft.photos.exe" => { let command = format!("{} /Wallpaper", path.display()); vec![&command] } _ => return, }; let output = Command::new(program) .args(args) .output(); if let Err(e) = output { eprintln!("Failed to set wallpaper: {}", e); } } } #[cfg(windows)] // 进入睡眠状态 fn sleep() { unsafe { SetSuspendState(0 as u32, 0 as u32, 0 as u32); } } #[cfg(not(windows))] // 进入睡眠状态(未实现) fn sleep() { eprintln!("sleep() is not implemented on this platform"); } ``` 需要注意的是,为了在 Windows 操作系统下设置壁纸,我们使用了 `rundll32.exe` 和 `microsoft.photos.exe` 这两个程序。在程序中,我们通过检查文件的扩展名来确定使用哪个程序。如果文件是 `jpg` 或 `jpeg` 格式,则使用 `rundll32.exe`;如果文件是 `png` 格式,则使用 `microsoft.photos.exe`。 另外,在 Windows 操作系统下,可以使用 `SetSuspendState` 函数将计算机进入睡眠状态。在上面的代码中,我们定义了一个 `sleep` 函数,用于实现进入睡眠状态的功能。但是,由于这个函数只在 Windows 操作系统下有效,因此我们使用了 `cfg(windows)` 属性来限制这个函数的使用范围。对于其他操作系统,我们只输出错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值