【问题标题】:Dialog box unresponsive with Windows Script Host (Python)Windows 脚本宿主 (Python) 对话框无响应
【发布时间】:2013-01-14 18:17:30
【问题描述】:

我正在尝试修改File > Print Setup. 下的打印设置选项

我正在使用带有 Python 的 Windows 脚本宿主。我使用Alt + F 后跟S 打开相应的对话框:

当我手动执行这些命令时,打印设置框处于焦点位置,因此我可以按F 选择“打印到文件”,然后按{ENTER}O 接受更改。

但是,ALT+FF 都没有选择“文件”选项。

shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate('Point of Sale')
shell.SendKeys("%fs") # I also tried "%fsf and "%fs%f" removing the other call to SendKeys"
time.sleep(0.1) # Removing this (or using a longer wait) makes no difference
shell.SendKeys("F") 

【问题讨论】:

  • 如果你发送%f,等待,然后发送s? S 或 ALT + F 是否区分大小写? (即按下 shift 是否重要?)
  • @NickODell 在%fs 之间插入等待,不会执行s 命令。这些命令不区分大小写;无论哪种方式,它们都可以工作。
  • 不,这是一个python脚本。
  • “销售点”是什么应用程序?
  • @ATOzTOA 这是我们在没有电子收银机的情况下使用的软件。我不认为这个问题是特定于软件的,但这很奇怪。

标签: python wsh


【解决方案1】:

在发送“F”之前,您必须等待对话框出现。

试试这个:

shell.SendKeys("%fs")
time.sleep(.25)
shell.SendKeys("f")

【讨论】:

  • 这似乎可行,但不幸的是我试过了,但它没有。也许我需要一种让子 Print Setup 窗口成为焦点的方法,即使当我手动运行键盘快捷键时,它也是焦点。
  • 那么问题应该出在shell.AppActivate('Point of Sale'),试试Notepad
  • AppActivate 只是让窗口成为​​焦点。我不认为这是错误的根源。使用记事本,我可以在一个字符串中执行多项操作shell.SendKeys("%fs%fMargins")
  • 运行脚本时窗口是否被聚焦?
  • 是的;好点子。但这只会让这个错误更加陌生。
【解决方案2】:

此问题与该软件的部分开发人员实施不正确有关。为了解决这个问题,我使用 SendKeys 发送多个TABS,直到选中File

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多