如何在python脚本中将SendKeys发送到Windows窗体?

时间:2016-01-12 13:59:51

标签: winforms python-2.7 ui-automation pywinauto

我正在为我的桌面应用程序在Python中进行自动化脚本编写。 在那里我发送TAB键/任何键到我的窗体。但是我无法在Python脚本中找到该窗体的句柄。

以下是示例代码段:

__author__ = 'juhis'

import SendKeys
import sys
import os
from Tkinter import *
import ctypes
import win32gui
import pywinauto

pwapp = pywinauto.application.Application()
whandle = pywinauto.findwindows.find_windows(title_re='Form1',class_name='WindowsForms10.Window.8.app.0.2bf8098_r13_ad1')[0]
window1 = pwapp.window_(handle=whandle)
window1.SetFocus()

SendKeys.SendKeys("""{PAUSE 2}""")
SendKeys.SendKeys("""{TAB 2}{PAUSE 2}{ENTER}""")

请帮我弄清楚问题。

-Thanks

2 个答案:

答案 0 :(得分:1)

可以更简单地重写代码:

import pywinauto

app = pywinauto.application.Application().connect(title_re='Form1')
Form1 = app.Window_(title_re='Form1', class_name='WindowsForms10.Window.8.app.0.2bf8098_r13_ad1')
Form1.SetFocus()
Form1.TypeKeys("{PAUSE 2}")
Form1.TypeKeys("{TAB 2}{PAUSE 2}{ENTER}")

TypeKeys自动将焦点设置为Form1并键入键。 SendKeys没有设置焦点,因为它不了解窗口。这可能就是为什么它不能与SendKeys一起使用。

[编辑]当然,您需要以管理员身份运行脚本。

答案 1 :(得分:0)

我为这个问题得到了修复。我所犯的错误是,我没有以管理员身份运行我的脚本。所以这就是SendKeys活动没有发生的原因。

但是当我以管理员身份运行脚本时,SendKeys事件已成功发送到Windows窗体。

感谢瓦西里的帮助。