在Python中将密钥发送到非活动窗口

时间:2014-02-20 19:45:36

标签: python winapi process window key

我正在尝试从Python程序中按下另一个进程中的键。我已经尝试了win32 api,但不知怎的,这段代码什么也没做:

import win32gui
import win32con
import win32api

hwnd = win32gui.FindWindow("notepad", "prueba.txt: Bloc de notas")

if(hwnd != 0):

    win32api.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    win32api.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

    while(True):

        win32api.SendMessage(
            hwnd,
            win32con.WM_CHAR,
            ord('x'),
            0)
else:
    print("The window is closed")

当然我想这样做到一个不活跃的窗口。任何解决方案或替代方案?

由于

2 个答案:

答案 0 :(得分:0)

目标窗口错误。记事本有多个窗口:它有一个带有子编辑控件的框架窗口。为了使你的代码工作,你应该找到一个子帧(在你的代码中是= hwnd),它是一个编辑控件并向它发送WM_CHAR。

答案 1 :(得分:0)

使用(但添加错误检查)

hwndMain = win32gui.FindWindow("notepad", "prueba.txt: Bloc de notas")
hwndEdit = win32gui.FindWindowEx( hwndMain, 0, "Edit", 0 )
win32api.PostMessage( hwndEdit,win32con.WM_CHAR, ord('x'), 0)
如果你想循环发布消息,你应该添加一些“睡眠”调用: - )