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

2009/06/20 | AutoHotkey鍵盤工具 | 作者: 簡睿| 閱讀總數 5647 , 1 (本日)Share/Bookmark

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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按來鍵來測試:

1
2
3
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卻又可以),因此我再修改了一下,用剪貼簿的方法解決此問題:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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 ''
}

##

相關文章

留言-您的隻字片言對作者都是莫大的鼓勵

 1.  留言 作者: nicklien1214 撰寫時間: 2010/02/11 13:08:52

Thx for sharing; but
code無法直接run

<8

似乎應該改為
<<8
"

[回應]


 2.  留言 作者: nicklien1214 撰寫時間: 2010/02/11 13:14:49

sorry, again for 同樣的主題

我上一篇寫的是 (at line #3 #4)
& l t ; 8 和 單引號
結果呈現
<8 和 ‘

所以此站會作一些有時候反而壞事的自動轉換 站主可考慮處理一下

[回應]

簡睿 回應:

感謝。WordPress在存檔時自動做了轉換…傷腦筋…

[回應]


撰寫留言





隨機文章

本日點擊排行 本周點擊排行 本月點擊排行 歷史點擊排行 | 統計表
  1. [WM6] 自動再次提醒未接來電等事件:ReRemind (3 人次, 2009-04-19)
  2. [轉貼] 利用Wood Workshop自製木頭質感的底圖素材 (3 人次, 2005-06-14)
  3. 用DeskView讓桌面變清爽 (3 人次, 2008-01-24)
  4. 接聽電話後重新顯示螢幕的偵測軟體:Touch InCall Screen Tweak (3 人次, 2009-03-12)
  5. 在Blog裡顯示隨機文章的簡單作法 (2 人次, 2007-10-14)
  6. ls -d 的用途 (2 人次, 2004-12-26)
  7. WinMerge檔案濾鏡的使用方法 (2 人次, 2006-09-10)
  8. Linus談Git與TortoiseGit (2 人次, 2008-12-19)
  9. [NetBeans] 安裝與設定NetBeans內的Subversion (2 人次, 2006-01-21)
  10. [Tools] 為硬碟做健康檢查:HDDlife; 硬碟測試:HD_Speed、HD Tune (2 人次, 2005-03-18)
  11. 搖手機啟動指定的程式:G-Trigger (2 人次, 2009-03-19)
  12. [轉貼] Me Media——個人媒體時代來臨! (2 人次, 2005-04-10)
  13. 又一個Java寫的資料庫前端工具:Execute Query 3.0 (2 人次, 2006-09-21)
  14. 如何組成強固又容易記憶的密碼? (2 人次, 2009-01-07)
  15. OpenOffice.org擴充的集中站 (2 人次, 2008-01-31)
  16. [Blog] 刪除del.icio.us的張貼網站 (2 人次, 2005-03-05)
  17. [Xuite] 文章分類後面的小圖示代表什麼意義? (2 人次, 2005-03-16)
  18. Spb Mobile Shell設定備忘 (2 人次, 2009-02-19)
  19. Windows Mobile使用的完美聯絡人軟體:Inesoft Phone [修訂] (2 人次, 2009-02-28)
  20. (2 人次, 2004-12-15)
  21. 能與Google Reader同步的Windows Mobile RSS reader? (2 人次, 2009-03-09)
  22. [轉貼] 全球掀熱潮 桃太郎最愛玩部落格 (2 人次, 2007-04-09)
  23. 讓手機永保清醒的DontSleep Wifi (2 人次, 2009-03-13)
  24. [轉貼] 千千靜聽:自動抓歌詞+詞曲同步的KTV播放器 (2 人次, 2005-07-22)
  25. [工具] Xuite人氣統計網頁 (2 人次, 2007-09-16)
  26. Xuite網址的正規運算式測試 (2 人次, 2007-04-30)
  27. 常見的收錄書籤網址寫法之彙總表格 V1.1 (2 人次, 2007-04-01)
  28. [SVN] Hook scripts的使用方法 (2 人次, 2005-12-09)
  29. [Subversion] 尋找Subversion Client工具 (2 人次, 2005-09-01)
  30. [創作] 字型工具產生器:動態變更Blog網頁的字型大小 (2 人次, 2007-04-29)
  31. 關閉所有視窗的小工具:CloseAll.exe (2 人次, 2010-05-22)
  32. 用樣式控制Google AdSense廣告顯示的位置 (2 人次, 2007-05-03)
  33. [Tools] 快速搜尋檔案:Locate32 (2 人次, 2005-07-16)
  34. 用tag2find幫你的文件隨處貼標籤 (2 人次, 2008-01-11)
  35. [轉貼Toget] iColorfolder:為資料夾圖示換上繽紛色彩 (2 人次, 2005-08-09)
  36. 亞洲電腦巨擘之間的博弈 (1 人次, 2007-09-24)
  37. 網頁程式碼美化程式 Google Code Prettify (1 人次, 2007-05-27)
  38. 方便但常會忘了的指令 (1 人次, 2004-12-15)
  39. Picasa 圖片整理工具 (1 人次, 2005-01-19)
  40. 把VMWare丟掉! Free的x86模擬器: QEMU (1 人次, 2004-12-16)
  41. FireFox 1.0必備的擴充套件 (1 人次, 2004-12-09)
  42. 我常用的軟體工具彙整清單 (1 人次, 2007-03-31)
  43. 在字裡行間發出嗡嗡聲:LineBuzz--線上註解服務 (1 人次, 2007-05-20)
  44. 快速啟動「服務」、「新增/刪除程式」視窗的方法 (1 人次, 2005-01-20)
  45. DOS (命令提示字元) 的巨集功能 (1 人次, 2005-01-18)
  46. Thunderbird的「標籤」功能 (1 人次, 2005-01-14)
  47. IDEA的編輯web.xml的圖形介面 (1 人次, 2005-06-06)
  48. 語系/地區碼 zh-TW與zh-CN 中的zh代表什麼? (1 人次, 2005-06-07)
  49. Secrets of Firefox 1.0 (1 人次, 2005-01-15)
  50. Firefox: 使用者自訂檔 (1 人次, 2005-01-08)
標籤雲

Bad Behavior has blocked 10 access attempts in the last 7 days.