【问题标题】:Send keystrokes to a specific window using PowerShell使用 PowerShell 将击键发送到特定窗口
【发布时间】:2015-10-14 06:29:37
【问题描述】:

有没有办法使用 PowerShell 将击键发送到特定窗口?
现在我正在打开一个 IE 窗口。
然后,通过调用该链接,将打开一个下载窗口。
我发送 ALT+TAB 来切换下载窗口,发送 LEFT+ENTER 来确认下载。
有没有办法将此 LEFT+ENTER 发送到特定窗口而无需关注它?
我的代码如下所示:

$ie=new-object -com internetexplorer.application
$ie.navigate2($url)
$ie.visible=$true
while($ie.busy) {Start-Sleep 1}
start-sleep -seconds 1
[System.Windows.Forms.SendKeys]::SendWait("%{TAB}")
start-sleep -seconds 1
[System.Windows.Forms.SendKeys]::SendWait("{LEFT}")
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")

我想将击键发送到特定窗口,以确保即使焦点不在下载窗口上也能获得击键。
我知道发送击键不是下载文件的最佳方式,但我也尝试过:

$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.Networkcredential($user, $password)
$webclient.DownloadFile($urlWeb,$path)

我总是收到 403 错误,但尚未找到解决此问题的解决方案...

【问题讨论】:

  • 建议切换到 Firefox 并使用 iMacros 插件在该浏览器中实现自动化。
  • 重新分级 403 错误:也许您必须发送带有请求的 cookie。使用 Fiddler/Debug 工具查看 cookie 并查看 this answer 以将它们与 WebClient 一起使用。
  • @nimizen 使用 firefox 是没有意见的,因为脚本必须在不同的系统上运行,而且并非所有系统都安装了 firefox...
  • @beatcracker 我已经看到你链接的问题并尝试了建议的解决方案,但没有成功......
  • @npit 那是一个公共站点,任何人都可以注册和下载文件吗?可以给个测试链接吗?

标签: windows powershell download keystroke


【解决方案1】:

我不是 SendKeys 的粉丝,因为它几乎总是失败。如果我使用提供的链接,我可以使用此 Powershell 代码下载文件:

$userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
$target = "http://download.thinkbroadband.com/5MB.zip"
$folder = "C:\TEMP\5MB.zip"

$web = New-Object System.Net.WebClient
$web.Headers.Add("user-agent", $userAgent)
$web.DownloadFile($target, $folder)

您可能还需要添加网络凭据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多