Python 使用win32api将键发布到记事本不会';行不通

Python 使用win32api将键发布到记事本不会';行不通,python,winapi,pywin32,win32gui,Python,Winapi,Pywin32,Win32gui,这是我从字符串“Hello world”发送密钥的代码。 我打开了记事本的一个实例,证明字符串“find”已打印,但记事本上没有显示任何内容 有什么想法吗 import win32con import win32api import win32gui def enumHandler(hwnd, lParam): if win32gui.IsWindowVisible(hwnd): if 'Notepad' in win32gui.GetWindowText(hwnd):

这是我从字符串“Hello world”发送密钥的代码。 我打开了记事本的一个实例,证明字符串“find”已打印,但记事本上没有显示任何内容

有什么想法吗

import win32con
import win32api
import win32gui

def enumHandler(hwnd, lParam):
    if win32gui.IsWindowVisible(hwnd):
        if 'Notepad' in win32gui.GetWindowText(hwnd):
            print 'found'
            for c in "Hello World\n":
                win32api.PostMessage(
                                    hwnd,
                                    win32con.WM_CHAR,
                                    ord(c),
                                    0)

win32gui.EnumWindows(enumHandler, None)

问题是您正在将消息发送到记事本主窗口。这是具有标题栏的顶级窗口。这些消息将由作为顶级窗口子级的编辑控件进行处理。您只能通过在那里发送消息来实现这一点


然而,我确信你真正的问题不同于在记事本程序中伪造键盘输入。而你真正的问题很可能最好用另一种方式来解决。Windows提供UIAutomation以实现应用程序的自动化。这很可能是解决您实际问题的正确方法。

是的,没错。对于Windows中的UIAutomation,您建议使用哪个库?我们也希望有文档链接。UIAutomation是一个COM库,您可以很容易地使用Python驱动COM。UIAutomation在MSDN上有很好的文档记录。您能使用UIAutomation库创建一个简单的示例来实现我的代码的目的吗?那太好了:-)对不起,我从来没有用Python做过。我要花很长时间才能按你的要求去做。然而,一点websearch会给你更好的结果。例如:那里有很多好东西。例如:但是外面有很多好东西。真的,你不想在伪造输入上乱来。太可怕了!好的,我找到了pywinauto,但它没有得到很好的支持(不能在64位上工作,具有找不到的依赖项)。我发现:这是一个使用UICOM库的示例