由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 ''
}
##
您可能也會有興趣的類似文章
- [AutoHotkey] 在檔案總管裡按滑鼠滾輪切換到上層資料夾 (3則留言, 2011/06/23)
- AutoHotkey輸出中文的方法 (4則留言, 2008/03/01)
- 用螢幕鍵盤來設定熱鍵:Qliner Hotkeys (1則留言, 2008/08/26)
- WinHotKey:簡單幾步定義自己的系統快速鍵 (2則留言, 2010/01/18)
- 支援Unicode的Autohotkey終於浮上抬面! (0則留言, 2010/10/16)
- [Tools] 常用的AutoHotKey設定 (9則留言, 2005/05/12)
- [Tools] 操作熱鍵與熱字串的超便利工具:AutoHotKey (13則留言, 2005/04/29)
- 讓MSN的Esc鍵失效 (5則留言, 2008/10/22)
- 用AutoHotkey防止因按Esc鍵而不慎誤關視窗 (0則留言, 2011/04/01)
- 使用Autohotkey開發的熱字串替換工具:Texter (1則留言, 2007/03/06)
- AutoHotkey的專屬論壇 (3則留言, 2008/08/02)
- AutoHotkey與Google+ Commander合用-以滑鼠移動訊息位置 (0則留言, 2011/10/31)
- [AutoHotkey] 寫得不錯的AutoHotkey推薦文 (3則留言, 2007/10/31)
- 用AutoHotkey輕鬆製作螢幕小鍵盤 (12則留言, 2008/03/16)
- 用AutoHotkey統一不同工具的偵錯功能鍵 (0則留言, 2008/03/19)















Thx for sharing; but
code無法直接run
<8
‘
似乎應該改為
<<8
"
sorry, again for 同樣的主題
我上一篇寫的是 (at line #3 #4)
& l t ; 8 和 單引號
結果呈現
<8 和 ‘
所以此站會作一些有時候反而壞事的自動轉換 站主可考慮處理一下
感謝。WordPress在存檔時自動做了轉換…傷腦筋…
[...] 原版的 AutoHotkey 不支持 unicode ,给中文用户带来极大不便。比如,sendinput 输入中文时,必须借助剪贴板 或 自定义函数。 [...]