使用win32api发送按键到记事本不起作用
这是我用来发送字符串“Hello world”中的按键的代码。
我打开了一个记事本,证明是字符串“found”被打印出来了,但我的记事本上什么也没有显示。
有什么想法吗?
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 个回答
3
问题在于,你把消息发送到了主记事本窗口。这个窗口就是最上面的那个,有标题栏的窗口。消息会被这个窗口下面的编辑控件处理。你只能通过发送消息到这个地方来让它工作。
不过,我相信你真正的问题并不是模拟键盘输入到记事本程序。你真正的问题很可能有更好的解决办法。Windows提供了UIAutomation功能,专门用来自动化应用程序。这很可能是解决你实际问题的正确方法。