改寫AutoHotkey輸出中文字串的寫法

由PTT看到Lumania (小糠榔)寫的輸出中文Unicode字串的AutoHotkey腳本,簡潔清楚(腳本裡使用了較新的函數,因此你的AutoHotkey必須是1.0.47+以上的版本):

2010/11/17 補充:
AutoHotkey已有UTF-8的分支,不必再使用這些方法了。請參考支援Unicode的Autohotkey終於浮上抬面!

SendBig5(xx)
{
  if (i:=StrLen(xx)) =0
     return
  loop
  {
     j:=1
     if((tmp1 := NumGet(xx, 0, 'UChar')) & 0x80)
     {
        tmp1:= (tmp1 < < 8) | NumGet(xx, 1, 'UChar')
        j:=2
     }
     sendinput, {ASC %tmp1%}
     stringtrimleft, xx, xx, j
     if (i-=j)=0
       break
  }
}

再用F12按來鍵來測試:

f12::
  sendBig5('中文測試')
  return

程式主要的邏輯是用{ASC nnnnn}輸出Unicode。依據官網文件的說明,nnnnn為1到255是ASCII碼,0128到0255是ANSI碼,而256到65535就是Unicode碼。 可惜有部份程式無法接受256~65535轉Unicode的作法,例如PSPad Unicode版本和Word 2003 SP3都不行(怪異的是PowerPoint 2003、Excel 2003卻又可以),因此我再修改了一下,用剪貼簿的方法解決此問題:

SendBig5(xx)
{
  WinGetClass,sClass,A
  ;;MsgBox %sClass%
  ;; PSPad Unicode || Word 2003
  if (sClass='TfPSPad.UnicodeClass' || sClass='OpusApp') {
    send_symbol_clp(xx)
    return
  }

  if (i:=StrLen(xx)) =0
     return
  loop
  {
     j:=1
     if((tmp1 := NumGet(xx, 0, 'UChar')) & 0x80)
     {
        tmp1:= (tmp1 < < 8) | NumGet(xx, 1, 'UChar')
        j:=2
     }
     sendinput, {ASC %tmp1%}
     stringtrimleft, xx, xx, j
     if (i-=j)=0
       break
  }
}

; 透過剪貼簿送出一組中文符號,如send_symbol_clp('。')
send_symbol_clp(symbol) {
  oldClip := ClipboardAll ;;%Clipboard%
  Clipboard =
  Clipboard = %symbol%
  ClipWait
  Send ^v
  ;;sleep 1000
  Clipboard = %oldClip%
  ;;oldClip =
  return ''
}


##

您可能也會有興趣的類似文章

4 則留言 »改寫AutoHotkey輸出中文字串的寫法

填寫回應

 

 

 

您可使用這些HTML標籤

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

隨機文章

  1. net2ftp: 用瀏覽器當FTP Client 
  2. [轉貼] 台北牛肉麵節 
  3. 帶iPad去旅行—行前準備篇+Markdown試用 (5)
  4. 給Ant用的Subversion task 
  5. SCO聲請破產保護 
  6. 幫Xuite增加單篇文章的雙擊快速編輯功能 (1)
  7. [OOo] 中文拚點包的安裝步驟 
  8. [Firefox] 自動統計的瀏覽紀錄排行榜外掛:New Tab King 
  9. 將圖片批次加入浮水印的工具:TSR Watermark Image Software 
  10. 全面做好GTD任務管理:Toodledo、TaskUnifier與Pocket Informant (10)

歷史熱門文章

  1. 如何手動輸入Plurk的表情圖示? (368,356 點擊/2008-09-29)
  2. 啟用&關閉中華電信ZyXEL P874的無線網路連線功能的步驟[修訂] (120,230 點擊/2011-06-01)
  3. Plurk CSS樣式自訂修改全攻略 (89,441 點擊/2009-07-04)
  4. 簡單放大Plurk輸入區的方法[修訂] (88,884 點擊/2008-09-29)
  5. 網路升級光世代50M/3M與設定ZyXEL P874 (72,048 點擊/2011-05-28)
  6. 輕鬆學會彈指神功-揭露AutoHotkey絕技 (50,858 點擊/2008-04-10)
  7. iPad新手入門技巧 (49,364 點擊/2011-02-05)
  8. iPad鍵盤輸入全攻略 (42,836 點擊/2011-01-01)
  9. 分享世博台灣館主題曲『台灣的心跳聲』MV(附歌詞+下載連結+新歌詞) (40,895 點擊/2010-04-27)
  10. 調整Windows 7環境: 加回工作列的「顯示桌面」圖示 (40,814 點擊/2010-01-02)