1
1
use clap:: Parser ;
2
2
use inquire:: { Select } ;
3
3
use std:: collections:: HashMap ;
4
- use windows:: core:: * ;
5
-
6
4
use windows:: {
7
5
core:: {
8
6
PCWSTR ,
@@ -24,7 +22,6 @@ use windows::Win32::Foundation::{
24
22
HWND ,
25
23
BOOL ,
26
24
} ;
27
- use windows:: Win32 :: UI :: WindowsAndMessaging :: { GetWindowLongA , GWL_STYLE } ;
28
25
29
26
#[ derive( Parser , Debug ) ]
30
27
#[ command( version, about, long_about = None ) ]
@@ -55,32 +52,40 @@ extern "system" fn enum_window(window: HWND, _: LPARAM) -> BOOL {
55
52
}
56
53
57
54
fn main ( ) {
55
+ let binding = std:: env:: var ( "LANG" ) . unwrap ( ) ;
56
+ let mut os_lang = binding. as_str ( ) . split ( "." ) . collect :: < Vec < _ > > ( ) [ 0 ] ;
57
+ let lang_eunm: HashMap < & str , [ & str ; 6 ] > = HashMap :: from ( [
58
+ ( "zh_CN" , [ "全屏无边框" , "顶置" , "选择窗口" , "选择模式" , "方向键切换/enter选择" , "There was an error, please try again" ] ) ,
59
+ ( "en_US" , [ "Full screen without borders" , "Top placement" , "Select window" , "Selection mode" , "Direction key switching/enter selection" , "There was an error, please try again" ] ) ,
60
+ ( "ja_JP" , [ "全画面ボーダレス" , "最前面表示" , "ウィンドウを選択する" , "選択モード" , "矢印キーで切り替え / エンターキーで選択" , "There was an error, please try again" ] ) ,
61
+ ] ) ;
62
+ if !lang_eunm. contains_key ( os_lang) {
63
+ os_lang = "en_US"
64
+ }
58
65
unsafe {
59
66
EnumWindows ( Some ( enum_window) , LPARAM ( 0 ) ) ;
60
67
}
61
68
let mut mode_eunm: HashMap < & str , fn ( HWND ) > = HashMap :: new ( ) ;
62
- mode_eunm. insert ( "全屏无边框" , utils:: controller:: frameless) ;
63
- mode_eunm. insert ( "顶置" , utils:: controller:: overhead) ;
64
- let mut title: & str = "" ;
69
+ mode_eunm. insert ( lang_eunm[ os_lang] [ 0 ] , utils:: controller:: frameless) ;
70
+ mode_eunm. insert ( lang_eunm[ os_lang] [ 1 ] , utils:: controller:: overhead) ;
65
71
let args = Args :: parse ( ) ;
66
- let options: Vec < & str > = vec ! [ "全屏无边框" , "顶置" ] ;
72
+ let options: Vec < & str > = vec ! [ lang_eunm [ os_lang ] [ 0 ] , lang_eunm [ os_lang ] [ 1 ] ] ;
67
73
let mut o: Vec < & str > = vec ! [ ] ;
68
74
unsafe {
69
75
for i in 0 ..PROCESS . len ( ) {
70
76
o. push ( PROCESS [ i] . as_str ( ) ) ;
71
77
}
72
78
}
79
+ let mut title: & str = "" ;
73
80
if args. title == "" {
74
- title = Select :: new ( "选择窗口" , o) . prompt ( ) . unwrap ( ) ;
81
+ title = Select :: new ( lang_eunm [ os_lang ] [ 2 ] , o) . prompt ( ) . unwrap ( ) ;
75
82
} else {
76
83
title = & * args. title
77
84
}
78
- let mut ans: Select < & str > = Select :: new ( "选择模式" , options) ;
79
- ans. help_message = Option :: from ( "方向键切换/enter选择" ) ;
85
+ let mut ans: Select < & str > = Select :: new ( lang_eunm [ os_lang ] [ 3 ] , options) ;
86
+ ans. help_message = Option :: from ( lang_eunm [ os_lang ] [ 4 ] ) ;
80
87
unsafe {
81
88
let hwnd = FindWindowW ( None , PCWSTR ( HSTRING :: from ( title) . as_ptr ( ) ) ) ;
82
- let style = GetWindowLongA ( hwnd, GWL_STYLE ) ;
83
- println ! ( "{}" , style) ;
84
89
if args. mode !="" {
85
90
mode_eunm[ args. mode . as_str ( ) ] ( hwnd)
86
91
} else {
0 commit comments