VB.NET SHDocVw.InternetExplorer:Windows安全弹出窗口
您好,我正在使用Internet Explorer headless模式对脚本执行自动任务,但我遇到了一个问题,有时在某些页面上冲浪时,会出现身份验证弹出窗口,以登录页面,但不是通过HTML弹出窗口,而是通过windows弹出窗口 我想控制弹出窗口,这样当它弹出时,它就会显示在顶部。现在它是非常随机的,它有时显示在所有程序的顶部,但有时它在后台很远,然后自动化失败,因为用户没有看到弹出窗口 硬编码用户名和密码不是一个选项 有人知道我如何操作弹出窗口(见附件中的捕获)并最终将其放在屏幕顶部吗 谢谢 解决方案:VB.NET SHDocVw.InternetExplorer:Windows安全弹出窗口,vb.net,popup,shdocvw,shdocvw.internetexplorer,Vb.net,Popup,Shdocvw,Shdocvw.internetexplorer,您好,我正在使用Internet Explorer headless模式对脚本执行自动任务,但我遇到了一个问题,有时在某些页面上冲浪时,会出现身份验证弹出窗口,以登录页面,但不是通过HTML弹出窗口,而是通过windows弹出窗口 我想控制弹出窗口,这样当它弹出时,它就会显示在顶部。现在它是非常随机的,它有时显示在所有程序的顶部,但有时它在后台很远,然后自动化失败,因为用户没有看到弹出窗口 硬编码用户名和密码不是一个选项 有人知道我如何操作弹出窗口(见附件中的捕获)并最终将其放在屏幕顶部吗 谢谢
Public Sub New()
' This call is required by the designer.
InitializeComponent()
Automation.AddAutomationEventHandler(WindowPattern.WindowOpenedEvent, AutomationElement.RootElement,
TreeScope.Subtree,
Sub(UIElm, evt)
Dim element As AutomationElement = TryCast(UIElm, AutomationElement)
If element Is Nothing Then Return
Dim NativeHandle As IntPtr = CType(element.Current.NativeWindowHandle, IntPtr)
If InStr(element.Current.Name, "Windows Security") > 0 Then
AppActivate(element.Current.ProcessId)
End If
End Sub)
End Sub
您可以使用UI自动化检测对话框的打开,使用
WindowPattern.WindowOpenedEvent
,从AutomationElement.RootElement
(桌面)开始设置事件处理程序(Automation.AddAutomationEventHandler
)。示例VB.Net代码,执行相同的操作。当您获得对话框的句柄(它在事件处理程序的AutomationEventArgs
对象的属性中设置)时,您可以使用或将其移动到前台,由于WindowPatter.SetWindowVisualState
方法可能无法与此类对话框一起工作。@Jimi感谢您的输入,它不容易理解,但我掌握了它的工作原理,尽管我无法实现,所以我使用了