我知道这是一个旧线程,但我昨天发现它试图解决同样的问题。可能消息来源说不可能做到这一点,但可以通过一种解决方法来做到这一点。需要这样做的原因有很多;其他论坛中的一些俏皮话诉诸“但你为什么需要它”。
我必须补充一点,下面的解决方案不是最优雅的,但也许是最简单的,它让我可以在几个小时内解决问题。
有两个步骤:
这将导致 PDF 链接自动触发对话框,询问您是否要保存文件(默认为“取消”)。我通过安装然后删除 Adobe Reader 来做到这一点。我知道必须通过查看注册表中的某些键或配置 Web 浏览器来解决它,但我没有时间解决这个问题。
将击键发送到弹出对话框。
代码如下所示:
Public Sub YourFunction()
'...
WebBrowser1.Navigate("https://... your URL")
Wait(2)
' Accept question to save
SendKeys.SendWait("{LEFT}")
Wait(0.5)
SendKeys.SendWait("{ENTER}")
Wait(0.5)
' Actually save the file
SendKeys.SendWait("{ENTER}")
Wait(0.5)
'...
End Sub
需要“等待”函数来让 WebBrowser 控件有时间实际导航到目标 URL;在您的情况下,这可能会有所不同。代码是:
Public Sub Wait(ByVal seconds As Double)
Static start As Date
start = Now()
Do While Now() < start.AddSeconds(seconds)
System.Windows.Forms.Application.DoEvents()
Loop
End Sub
有用。我刚刚下载了 1,700 个 PDF(出于我自己的目的,不打算解释)。不过,这花了一点时间。