使用win32api将记事本发布到记事本不起作用

时间:2014-03-04 14:24:52

标签: python winapi pywin32 win32gui

这是我从字符串“Hello world”发送密钥的代码。 我有一个打开记事本的实例,证据是打印出“找到”字符串,但我的记事本上没有任何内容。

有什么想法吗?

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)

1 个答案:

答案 0 :(得分:3)

问题是您是将消息发送到主记事本窗口。这是具有标题栏的顶级窗口。消息将由EDIT控件处理,该控件是顶级窗口的子级。您只能通过在那里发送消息来完成这项工作。

但是,我确信您的真正问题不同于将键盘输入伪装到记事本程序。而你真正的问题最有可能以不同的方式解决。 Windows提供UIAutomation以实现应用程序的自动化。这很可能是解决您实际问题的正确方法。