mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-26 05:39:45 +08:00
34
src-tauri/src/plugins/custom_log.rs
Normal file
34
src-tauri/src/plugins/custom_log.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
// tauri-plugin-log 简单处理
|
||||
// @since Beta v0.9.1
|
||||
|
||||
use chrono::DateTime;
|
||||
use log::LevelFilter;
|
||||
use std::time::SystemTime;
|
||||
use tauri::plugin::TauriPlugin;
|
||||
use tauri::Runtime;
|
||||
use tauri_plugin_log::{Builder, Target, TargetKind, TimezoneStrategy};
|
||||
|
||||
// 获取当前日期 yyyy-mm-dd
|
||||
fn get_current_date() -> String {
|
||||
let now = SystemTime::now();
|
||||
let date_time = DateTime::<chrono::Local>::from(now);
|
||||
let date = date_time.format("%Y-%m-%d").to_string();
|
||||
return date;
|
||||
}
|
||||
|
||||
pub fn build_log_plugin<R: Runtime>() -> TauriPlugin<R> {
|
||||
#[cfg(debug_assertions)]
|
||||
Builder::default()
|
||||
.targets([Target::new(TargetKind::Webview)])
|
||||
.timezone_strategy(TimezoneStrategy::UseLocal)
|
||||
.level(LevelFilter::Debug)
|
||||
.build::<R>();
|
||||
Builder::default()
|
||||
.targets([
|
||||
Target::new(TargetKind::Webview),
|
||||
Target::new(TargetKind::LogDir { file_name: get_current_date().into() }),
|
||||
])
|
||||
.timezone_strategy(TimezoneStrategy::UseLocal)
|
||||
.level(LevelFilter::Info)
|
||||
.build::<R>()
|
||||
}
|
||||
5
src-tauri/src/plugins/mod.rs
Normal file
5
src-tauri/src/plugins/mod.rs
Normal file
@@ -0,0 +1,5 @@
|
||||
// 插件
|
||||
// @since Beta v0.9.1
|
||||
|
||||
pub mod custom_log;
|
||||
pub mod text_scale;
|
||||
43
src-tauri/src/plugins/text_scale.rs
Normal file
43
src-tauri/src/plugins/text_scale.rs
Normal file
@@ -0,0 +1,43 @@
|
||||
// 监听系统文本放缩
|
||||
// @since Beta v0.9.1
|
||||
|
||||
use crate::utils;
|
||||
use std::{thread, time::Duration};
|
||||
use tauri::{AppHandle, Emitter};
|
||||
use widestring::U16CString;
|
||||
use windows_sys::Win32::Foundation::ERROR_SUCCESS;
|
||||
use windows_sys::Win32::System::Registry::{
|
||||
RegNotifyChangeKeyValue, RegOpenKeyExW, HKEY, HKEY_CURRENT_USER, KEY_NOTIFY, KEY_READ,
|
||||
REG_NOTIFY_CHANGE_LAST_SET,
|
||||
};
|
||||
|
||||
pub fn init(app: AppHandle) {
|
||||
thread::spawn(move || unsafe {
|
||||
let subkey = U16CString::from_str("Software\\Microsoft\\Accessibility").unwrap();
|
||||
let mut hkey: HKEY = std::ptr::null_mut();
|
||||
|
||||
let status =
|
||||
RegOpenKeyExW(HKEY_CURRENT_USER, subkey.as_ptr(), 0, KEY_READ | KEY_NOTIFY, &mut hkey);
|
||||
|
||||
if status != ERROR_SUCCESS {
|
||||
eprintln!("❌ 无法打开注册表键: {}", status);
|
||||
return;
|
||||
}
|
||||
|
||||
loop {
|
||||
let notify_status =
|
||||
RegNotifyChangeKeyValue(hkey, 0, REG_NOTIFY_CHANGE_LAST_SET, std::ptr::null_mut(), 0);
|
||||
|
||||
if notify_status == ERROR_SUCCESS {
|
||||
if let Ok(scale) = utils::read_text_scale_factor() {
|
||||
let _ = app.emit("text_scale_change", scale);
|
||||
}
|
||||
} else {
|
||||
eprintln!("❌ 注册表监听失败: {}", notify_status);
|
||||
break;
|
||||
}
|
||||
|
||||
thread::sleep(Duration::from_secs(1));
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user