; CharHalfShape4FullShape(Char, ToFullShape = true)
; 功能:全角半角字符互相转换函数。需要 AutoHotkey_L Unicode 版本。
; 作者:amnesiac
; 参数说明:
        ; Char        需转换的字符。
        ; ToFullShape        为真时转换为全角,否则转换为半角。
        
; StringHalfwidth2Fullwidth(ByRef String,toHalf:=false)

; 功能:全角半角字符串互相转换函数

; 作者:蜜罐哥
; 参数说明:
        ; String 需要转换的字符串
        ; toHalf=true转半角,toHalf=false转全角


/*
CharHalfShape4FullShape(Char, ToFullShape = true)
        全角半角字符互相转换函数。需要 AutoHotkey_L Unicode 版本。
作者: amnesiac
参数说明:
        Char        需转换的字符。
        ToFullShape        为真时转换为全角,否则转换为半角。
        
StringHalfwidth2Fullwidth(ByRef String,toHalf:=false)
作者:蜜罐哥
参数说明:
        String 需要转换的字符串
        toHalf=true转半角,toHalf=false转全角
*/
InputBox, Key, 输入框, 请输入要转换成全角的字符
MsgBox, % Key ":" CharHalfShape4FullShape(Key, true)
InputBox, string, 输入框, 请输入要转换成全角的字符串
MsgBox, % string ":" StringHalfwidth2Fullwidth(string,false)
return
CharHalfShape4FullShape(Char, ToFullShape = true) {
  if ToFullShape && (Asc(Char) < 256) && Asc(Char)
    return, Chr(Asc(Char) + 65248)
  else if !ToFullShape && (Asc(Char) < 65504) && (Asc(Char) > 65248)
    return, Chr(Asc(Char) - 65248)
  else
    return, Char
}

StringHalfwidth2Fullwidth(ByRef String,toHalf:=false) {
  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
}

 

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