Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 如何在python脚本中将SendKeys发送到Windows窗体?_Winforms_Python 2.7_Ui Automation_Pywinauto - Fatal编程技术网

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

Winforms 如何在python脚本中将SendKeys发送到Windows窗体?,winforms,python-2.7,ui-automation,pywinauto,Winforms,Python 2.7,Ui Automation,Pywinauto,我正在用Python为我的桌面应用程序编写自动化脚本。 在这种情况下,我将TAB键/任意键发送到我的windows窗体。但我无法在Python脚本中找到该Windows窗体的句柄 以下是示例代码段: __author__ = 'juhis' import SendKeys import sys import os from Tkinter import * import ctypes import win32gui import pywinauto pwapp = pywinauto.app

我正在用Python为我的桌面应用程序编写自动化脚本。 在这种情况下,我将TAB键/任意键发送到我的windows窗体。但我无法在Python脚本中找到该Windows窗体的句柄

以下是示例代码段:

__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}""")
请帮我解决这个问题


-谢谢

代码可以更简单地重新编写:

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


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

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

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


感谢Vasily的帮助。

脚本的输出是什么?我在控制台上只得到以下输出:退出代码1,但这些选项卡按钮没有在Win FormIt上单击。看起来您使用旧版本的SWAPY生成代码。请使用和pywinauto 0.5.4。如果问题仍然存在,只需更新问题并在评论中告诉我。瓦西里,我尝试了你的代码。但它仍然不起作用。它把焦点放在了那个形式上,这意味着它得到了那个形式的正确处理。但它并没有向该表单发送任何密钥。我在控制台上收到一条输出消息“返回,退出代码为0”。您是否以管理员身份运行Python脚本?该注释非常有用。作为管理员运行也解决了我的问题。瓦西里,谢谢。不客气!仅供参考:在StackExchange上,将正确答案标记为已接受被认为是礼貌的。对于其他用户来说,这是一个信号,表明问题已经得到了真正的解决。如果你不这样做,专家回答你的问题的积极性就会降低。当然,瓦西里。我会记住这件事的。但就目前而言,我没有足够的声誉分数来标记正确的答案。你需要15个代表分数来投票,但每个问题的作者都可以接受答案。哦,是的!!知道了。我对此感到困惑。非常感谢。