Unicode SendKeys可选(任何编程语言)



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

目标:

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

问题:

一切都很好,直到我需要使用sendKeys发送unicode字符,比如alpha、delta或omega。钩子可以完美地工作,SendKeys可以完美地使用普通ASCII字符。我尝试了以下库,但都没有用:(底部的代码示例)

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

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

问题

1.是否可以将unicode字符与SendKeys一起使用?(到目前为止,谷歌搜索似乎表明这是不可能的)
既然情况可能并非如此,我想知道:
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)
shell.SendKeys(u"When Unicode characters are pasted here, harmony shall hopefully ensue".encode("utf-16le"), 0)

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

相关内容

最新更新