改寫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. 即時通訊軟體的愛與憎 (11)
  2. 快速切換資料夾之台灣之光:Folder Menu 
  3. [ADS] 在Linux上執行Aqua Data Studio 
  4. 如何備份Windows Live Writer的草稿與張貼內容? (4)
  5. [轉貼] Office外的另一選擇:StarOffice 8測試版 
  6. [Tools] 實用的圖片小工具:ClickPic 
  7. [Reference] del.ioco.us與Furl的比較 
  8. [Tools] 常駐式的記事本工具:AM-NoteBook 
  9. 把MyBlogLog的頭像圖形(Avatar)顯示在訪客回應裡 (4)
  10. [QNAP NAS] 用SQLite Manager讀取pyLoad資料 

歷史熱門文章

  1. 如何手動輸入Plurk的表情圖示? (352,911 點擊/2008-09-29)
  2. 簡單放大Plurk輸入區的方法[修訂] (86,912 點擊/2008-09-29)
  3. 啟用&關閉中華電信ZyXEL P874的無線網路連線功能的步驟[修訂] (83,718 點擊/2011-06-01)
  4. Plurk CSS樣式自訂修改全攻略 (83,043 點擊/2009-07-04)
  5. 網路升級光世代50M/3M與設定ZyXEL P874 (53,128 點擊/2011-05-28)
  6. 輕鬆學會彈指神功-揭露AutoHotkey絕技 (43,112 點擊/2008-04-10)
  7. iPad新手入門技巧 (40,345 點擊/2011-02-05)
  8. 分享世博台灣館主題曲『台灣的心跳聲』MV(附歌詞+下載連結+新歌詞) (38,131 點擊/2010-04-27)
  9. 把HTC Touch HD操作介面換成Spb Mobile Shell,美觀又便利! (37,943 點擊/2009-02-18)
  10. 另一套適用手機的影片轉檔工具:WinAVI 3GP/MP4/PSP/iPod Video Converter (35,894 點擊/2009-04-18)