【问题标题】:How to send SendKeys to Windows form in python script?如何在 python 脚本中将 SendKeys 发送到 Windows 窗体?
【发布时间】:2016-04-17 04:31:13
【问题描述】:

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

这里是示例代码sn-p:

__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}""")

请帮我解决问题。

-谢谢

【问题讨论】:

  • 脚本的输出是什么?
  • 我只是在控制台上得到以下输出:退出代码为 1 但是那些 TAB 按钮没有被点击那个 Win Form
  • 看起来您使用旧版本的 SWAPY 进行代码生成。请使用the latest SWAPY 和 pywinauto 0.5.4。如果问题仍然存在,只需更新问题并在 cmets 中告诉我。

标签: winforms python-2.7 ui-automation pywinauto


【解决方案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

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

【讨论】:

  • Vasily,我试过你的代码。但它仍然无法正常工作。它将重点放在该表单上,这意味着它可以正确处理该表单。但它没有向该表单发送任何密钥。我在控制台上收到输出消息“返回退出代码 0”
  • 您是否以管理员身份运行 Python 脚本?
  • 评论很有用。以管理员身份运行也解决了我的问题。瓦西里,谢谢。
【解决方案2】:

我已经解决了这个问题。我犯的错误是,我没有以管理员身份运行我的脚本。所以这就是 SendKeys 事件没有发生的原因。

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

感谢瓦西里的帮助。

【讨论】:

  • 不客气!仅供参考:在 StackExchange 上将正确答案标记为已接受被认为是礼貌的。这是其他用户真正解决问题的信号。如果您不这样做,可能会削弱专家回答您问题的积极性。
  • 当然瓦西里。我会记住这件事。但是现在,我没有足够的声望点来标记正确的答案。
  • 您需要 15 个代表点才能投票,但每个问题的作者都可以接受答案。
  • 噢耶!!知道了。我对此感到困惑。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多