/*
WinAPI之kernel32简单应用
*/
LCMAP_BYTEREV := 0x00000800 ;仅Windows NT:反转字节顺序。例如,通过0x3450和0x4822,结果为0x5034和0x2248。
LCMAP_FULLWIDTH := 0x00800000 ; 全角字符
LCMAP_HALFWIDTH := 0x00400000 ; 半角字符
LCMAP_HIRAGANA := 0x00100000 ; 平假名
LCMAP_KATAKANA := 0x00200000 ; 片假名。
LCMAP_LINGUISTIC_CASING := 0x01000000 ; 使用语言规则来区分大小写,而不是文件系统的规则(默认值)。LCMAP_LOWEERCASE或LCMAP仅可与UPERCASE组合使用。
LCMAP_LOWERCASE := 0x00000100 ; 使用小写字母。
LCMAP_SIMPLIFIED_CHINESE := 0x02000000 ; 中文简体字转繁体字。
LCMAP_SORTKEY := 0x00000400 ; 创建正规化的宽文字排序键。
LCMAP_TRADITIONAL_CHINESE := 0x04000000 ; 繁体字转簡体字
LCMAP_UPPERCASE := 0x00000200 ; 使用大写字母。
NORM_IGNORECASE := 0x00000001 ; 不区分大小写。
NORM_IGNOREKANATYPE := 0x00010000 ; 不区分大小写。不区分平假名和片假名。平假名和片假名是一样的。
NORM_IGNORENONSPACE := 0x00000002 ; 忽略无发送字符。
NORM_IGNORESYMBOLS := 0x00000004 ; 忽略符号
NORM_IGNOREWIDTH := 0x00020000 ; 不区分单字节字符和双字节相同的字符
SORT_STRINGSORT := 0x00001000 ; 将分隔符视为符号。
MsgBox,% Halfwidth2Fullwidth("/")
MsgBox,% Simplified2Traditional("发现")
;简单的简体与繁体转换
Simplified2Traditional(ByRef String,toSimp:=0){
LCMAP_SIMPLIFIED_CHINESE := 0x02000000,LCMAP_TRADITIONAL_CHINESE := 0x04000000
VarSetCapacity(output, 256)
DllCall("kernel32\LCMapString", "UInt", DllCall("kernel32\GetUserDefaultLCID"), "UInt", (!toSimp?LCMAP_TRADITIONAL_CHINESE:LCMAP_SIMPLIFIED_CHINESE), "WStr", String, "Int", -1, "WStr", output, "Int", 256)
String:=output,VarSetCapacity(output, -1)
Return String
}
;;半角与全角转换
Halfwidth2Fullwidth(ByRef String,toHalf:=0){
LCMAP_FULLWIDTH := 0x00800000,LCMAP_HALFWIDTH := 0x00400000
VarSetCapacity(output, 256)
DllCall("kernel32\LCMapString", "UInt", DllCall("kernel32\GetUserDefaultLCID"), "UInt", (!toHalf?LCMAP_FULLWIDTH:LCMAP_HALFWIDTH), "WStr", String, "Int", -1, "WStr", output, "Int", 256)
String:=output,VarSetCapacity(output, -1)
Return String
}
厉害!?