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

2024-04-26 22:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在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")

当然,我想对一个不活动的窗口执行此操作。有什么解决方案或替代方案吗?

谢谢


Tags: 代码import程序apireturn进程vkwin32
2条回答

目标窗口错误。记事本有不止一个窗口:它有一个带有子编辑控件的框架窗口。要使代码正常工作,您应该找到frame(=代码中的hwnd)的子级,它是一个编辑控件,并向它发送WM_字符。

使用(但添加错误检查)

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)

如果要循环发布消息,则应添加一些“睡眠”调用:-)

相关问题 更多 >