改寫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 '' }
##
您可能也會有興趣的類似文章
- [AutoHotkey] 在檔案總管裡按滑鼠滾輪切換到上層資料夾 (3則留言, 2011/06/23)
- AutoHotkey輸出中文的方法 (19則留言, 2008/03/01)
- WinHotKey:簡單幾步定義自己的系統快速鍵 (2則留言, 2010/01/18)
- 用螢幕鍵盤來設定熱鍵:Qliner Hotkeys (2則留言, 2008/08/26)
- 幾個AutoHotkey的實用範例:音量控制、滾輪回上層與語音功能(AHK #7) (3則留言, 2019/06/05)
- 支援Unicode的Autohotkey終於浮上抬面! (3則留言, 2010/10/16)
- [Tools] 常用的AutoHotKey設定 (9則留言, 2005/05/12)
- AutoHotkey腳本的4種除錯方法(AHK #5) (0則留言, 2019/05/25)
- 輕鬆學會AutoHotkey的熱鍵:熱鍵用法實例解說(AHK #4) (2則留言, 2019/05/24)
- 快速建立個人常用詞庫-AutoHotkey 熱字串小工具:HotString Helper(AHK #3) (0則留言, 2019/05/18)
- 用AutoHotkey輕鬆製作螢幕小鍵盤 (16則留言, 2008/03/16)
- 輕鬆學會彈指神功-揭露AutoHotkey絕技 (63則留言, 2008/04/10)
- AutoHotkey-Selenium WebDriver使用Image自動貼圖到Word文件 (0則留言, 2019/11/30)
- [AHK#53] AutoHotkey多行內容輸出時的偏移問題 (0則留言, 2022/07/31)
- AutoHotkey的進階剪貼簿功能:WinClip類別 (0則留言, 2019/10/26)
sorry, again for 同樣的主題
我上一篇寫的是 (at line #3 #4)
& l t ; 8 和 單引號
結果呈現
<8 和 ‘
所以此站會作一些有時候反而壞事的自動轉換 站主可考慮處理一下
感謝。WordPress在存檔時自動做了轉換…傷腦筋…
Thx for sharing; but
code無法直接run
<8
‘
似乎應該改為
<<8
"