Unicode SendKeys Alternative(任何编程语言)

时间:2014-11-07 18:52:06

标签: python unicode utf-8

在我谈到实际问题之前,我会说,尽管我目前正在使用Python,但我会接受任何语言的解决方案。我主要是Java程序员,但由于Java仅限于JVM,我认为用Java创建它是不可能的。

目标:

我试图创建一个拦截键盘事件的程序(我已经使用pyHook完成了这部分,这是我用Python编程的主要原因之一)。基于这些事件和上下文,我需要将unicode字符(古希腊语)写入任何聚焦窗口(目前仅在Windows操作系统上,但是可以在所有操作系统上运行的统一解决方案似乎是理想的)。基本上这是一个允许我(古典语言学生)输入古希腊语的程序。

问题:

一切正常,直到我需要使用sendKeys发送unicode字符,如alpha,delta或omega。钩子工作得很好,SendKeys与普通的ASCII字符完美配合。我尝试了以下库都无济于事(代码示例在底部)

  • SendKeysCtypes(与博客所说的不支持unicode相反)
  • win32com.client使用shell和SendKeys。
  • SendKeys(另一个图书馆基本上做同样的事情)

现在我已经概述了我目前的情况,我已经得到了以下问题:

问题

1。是否可以在SendKeys中使用unicode字符? (谷歌搜索到目前为止似乎表明这是不可能的。)
由于情况可能不是这样,我想知道:
2。是否有其他库能够将unicode字符发送到聚焦窗口?

我想到的另一件事是我可能完全使用了错误的方法(整个模拟按键事件的事情)。任何其他能帮助我达到或至少接近我的目标的解决方案都非常受欢迎。

#coding: utf-8
import time
import win32com
import win32com.client


shell = win32com.client.Dispatch("WScript.Shell")
shell.Run('notepad')
time.sleep(0.1)
shell.AppActivate('kladblok')
shell.SendKeys("When Unicode characters are pasted here, errors ensue", 0)

1 个答案:

答案 0 :(得分:1)

shell.SendKeys(u"When Unicode characters are pasted here, harmony shall hopefully ensue".encode("utf-16le"), 0)

你没有在评论中跟进问题,所以这必然是推测性的。