2011-03-01 25 views
1

我寫了一個應用程序,用戶可以註冊自定義全局熱鍵。當這些熱鍵按下時,它們會將給定的文本發送到活動窗體。我正在使用InputSimulator libray來執行此操作。但是,當我試圖讓這個應用程序寫入包含unicode字符的文本(例如:阿塞拜疆字母表中的「Ə」)時,它會寫入「?」代替。我將這個字符替換爲這個Charachter的「\ u0259」和其他十六進制代碼(以及其他像「Ü」,「Ö」,「Ğ」,「Ş」,「Ç」)。但沒有任何改變。我不能幻想其他庫支持unicode來做這個模擬過程。如何模擬unicode文本輸入到一個表格

我正在使用WindowsForms。我希望你能幫助我。謝謝!

回答

1

這可能與您在表單上使用的字體有關;確保它是一個Unicode字體(例如Arial Unicode MS)。

+0

我正在使用unicode字體。沒有這個應用程序,我可以寫「Ə」。所以這不是字體問題。 – 2011-03-01 18:02:15

+0

@Togrul:我明白了;我不確定你是否可以手動。 – 2011-03-01 18:05:21

+0

如果你得到「?」對於「Ə」,您的*應用程序*所使用的字體對於「Ə」沒有字形。確保您的字體支持Unicode,*和*包含阿塞拜疆字形。我公司主要產品的較新版本使用Arial Unicode(可從Microsoft或Ascender Corp獲得),它不特別支持阿塞拜疆語,但可能是土耳其語支持的一部分。 – DaveE 2011-03-01 18:16:23

0

我看了一下庫的內部,問題的核心應該在於功能InputBuilder.AddCharacter,其中字符被轉換爲WM_KEYUP/WM_KEYDOWN消息;但是,根據SendInputKEYBDINPUT結構的文件,它似乎很好地完成了它的工作。

我的犯罪嫌疑人的是,作爲一個wScan參數WORD,它不能支持BMP之外的Unicode字符,但這無法解釋爲什麼你的性格(應該絕對謊言裏面)沒有正確插入。

另一個疑是目標應用程序不正確地處理這些「特殊」 WM_KEYUP/WM_KEYDOWN(即具有如wParam中VK_PACKET並與黑色魔法WM_CHAR折算);每個應用程序都有這個問題嗎?

0

一種解決方案張貼在這裏: http://inputsimulator.codeplex.com/discussions/214858

dev的說,他在11月。「應該很快就會釋放」 ......目前,我尋找到編輯該.dll自己。看起來只有兩行更改。我會再次發佈,如果我弄清楚如何。

+0

非常感謝!我嘗試瞭解決方法,但它對我沒有幫助。也許這是爲了舊版本,或者我做錯了什麼。這門課對我來說仍然是最好的解決方案。如果你修復這個unicode支持問題,請通知我。再次感謝你:) – 2011-04-08 15:58:29

+0

是的,它也沒有爲我工作,無法弄清楚。修復看起來很簡單,但似乎是舊版本? :/ – cksubs 2011-04-15 08:17:58

相關問題