::/zh:: _sendRaw("中文") return _SendRaw(Keys) { Len := StrLen(Keys) ; 得到字串的長度,注意一個中文字元的長度是2 KeysInUnicode := "" ; 將要發送的字元序列 Char1 := "" ; 暫存字元1 Code1 := 0 ; 字元1的ASCII碼,值介於 0x0-0xFF (即1~255) Char2 := "" ; 暫存字元2 Index := 1 ; 用於迴圈 Loop { Code2 := 0 ; 字元2的ASCII碼 Char1 := SubStr(Keys, Index, 1) ; 第一個字元 Code1 := Asc(Char1) ; 得到其ASCII值 if(Code1 >= 129 And Code1 <= 254 And Index < Len) ; 判斷是否中文字元的第一個字元 { Char2 := SubStr(Keys, Index+1, 1) ; 第二個字元 Code2 := Asc(Char2) ; 得到其ASCII值 if(Code2 >= 64 And Code2 <= 254) ; 若條件成立則說明是中文字元 { Code1 <<= 8 ; 第一個字元應放到高8位上 Code1 += Code2 ; 第二個字元放在低8位元上 } Index++ } MsgBox %Code1% if(Code1 <= 255) ; 如果此值仍<=255則說明是非中文字元,否則經過上面的處理必然大於255 Code1 := "0" . Code1 ;;; KeysInUnicode = "" ; 若發現送出的中文變成ASCII數值,把此行開頭的分號刪掉 KeysInUnicode .= "{ASC " . Code1 . "}" if(Code2 > 0 And Code2 < 64) { Code2 := "0" . Code2 KeysInUnicode .= "{ASC " . Code2 . "}" } Index++ ;;; Send %KeysInUnicode% ; 若發現送出的中文變成ASCII數值,把此行開頭的分號刪掉 if(Index > Len) Break } Send % KeysInUnicode ; 若發現送出的中文變成ASCII數值,把此行開頭加上分號 Return "" } ;; _sendRaw