var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2010年05月24日

    发送罗马字符串输出日文字符

    分类:

    .Net框架中System.Windows.Forms.Keys中枚举了所有键值,而System.Windows.Forms.SendKeys中给出了具体实现逻辑:首先其静态构造函数构造数组

    keywords = new KeywordVk[] {new KeywordVk("ENTER", 13), new KeywordVk("TAB", 9), ....};Send调用其内静态私有方法void Send(string keys, Control control, bool wait),在该私有方法中调用其内另一静态私有方法void ParseKeys(string keys, IntPtr hwnd),在该方法内部对于虚拟键值vk = MatchKeyword(keyword),而函数MatchKeyword正与先前SendKeys类初始化时预定义数组相比较,如果没有则返回-1,这时在函数ParseKeys中转入else分支进入私有静态布尔函数AddSimpleKey,此函数根据VkKeyScan扫描出的虚拟键值添加相应虚拟键事件。

     

    Windows东亚语言切换快捷键中简要列举了一下东亚语言IME切换快捷键,下面以日语为例不直接点击IME切换而发送罗马字符串编程输出日文字符。

     

    日语Kanji和韩语Hanja的虚拟键值都相同即VK_HANJA=VK_KANJI=0x19

     

    日语罗马字符输入示例

    汉字

    SendKeys

    日本

    {KANJI}nihonn {ENTER}{KANJI}

    (%`)nihonn {ENTER}(%`)

    マイクロ

    {KANJI}maikuro {ENTER}{KANJI}

    (%`)maikuro {ENTER}(%`)

     

    【资源】

    How to Use Microsoft IME to Input East Asian Characters

    分享到: