/*
  WinAPI之kernel32简单应用,更多发现查阅:
  
【高级】AutoHotkey dllcall调用API全整理-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
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。