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

目标:

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

问题:

一切都很好,直到我需要使用 sendKeys 发送 unicode 字符,如 alpha、delta 或 omega。钩子(Hook)工作完美,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)
    

    最佳答案

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

    您没有跟进评论中的问题,因此这必然是推测性的。

    关于python - Unicode SendKeys 替代方案(任何编程语言),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26808094/

    10-11 08:45