gpt4 book ai didi

c# - 在 Internet Explorer 中打开新的模式对话框窗口时引发哪个事件?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:35 25 4
gpt4 key购买 nike

我在我的 Vb.Net WinForms 应用程序中使用 SHDocVw.InternetExplorer API 来捕获从我的应用程序中的 IE 发送的请求。

this 上给出链接

"The NewWindow3 event is only fired when a new instance of Internet Explorer is about to be created. Calling showModalDialog or showModelessDialog does not trigger an event because they are not new instances of Internet Explorer"

我正在尝试在 Internet Explorer 中自动执行用户操作以进行自动化测试。所以我想知道由于某些用户操作打开了模式对话框或打开了一些警告窗口。

所以我的问题是:

  • 我如何知道模式对话框窗口已在 Internet Explorer 中打开?

  • 在这种情况下,Internet Explorer 是否引发了任何其他事件?

  • 如果不能直接处理,是否有其他方法可以处理这种情况?

最佳答案

我唯一能找到的是 WindowStateChanged 事件 http://msdn.microsoft.com/en-us/library/aa768307(v=vs.85).aspx其中提到:

The WindowStateChanged event is raised when the state of a content window, such as the browser window or a tab, might have changed. The following actions raise this event.

  • The browser window is minimized or restored.
  • An active tab becomes inactive.
  • An inactive tab becomes active.
  • The browser window is enabled or disabled due to a modal dialog box.

这是一个 VB.NET 代码示例,说明如何使用 WindowStateChanged 事件检查启用/禁用和可见标志:

Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Code to instantiate the IE COM object'
Dim IE As New SHDocVw.InternetExplorer()
AddHandler IE.WindowStateChanged, AddressOf OnWindowStateChanged
'do stuff here'
IE.Quit()
End Sub

Public Sub OnWindowStateChanged(ByVal dwWindowStateFlags As UInteger, ByVal dwValidFlagsMask As UInteger)
Const OLECMDIDF_WINDOWSTATE_USERVISIBLE As UInteger = 1
Const OLECMDIDF_WINDOWSTATE_ENABLED As UInteger = 2

'Check if the window is disabled'
If dwValidFlagsMask And OLECMDIDF_WINDOWSTATE_ENABLED = OLECMDIDF_WINDOWSTATE_ENABLED Then
If dwWindowStateFlags And OLECMDIDF_WINDOWSTATE_ENABLED <> OLECMDIDF_WINDOWSTATE_ENABLED Then
'The browser window has been disabled.... possibly by a modal popup'
Else
'The browser is enabled.'
End If
Else
'The enabled/disabled flag has not been initialized, so we cannot check the state during this event handler execution'
End If

'Check if window is visible: '
If dwValidFlagsMask And OLECMDIDF_WINDOWSTATE_USERVISIBLE = OLECMDIDF_WINDOWSTATE_USERVISIBLE Then
If dwWindowStateFlags And OLECMDIDF_WINDOWSTATE_USERVISIBLE <> OLECMDIDF_WINDOWSTATE_USERVISIBLE Then
'The browser window is NOT visible'
Else
'The browser window is visible'
End If
Else
'The visible flag has not been initialized, so we cannot check the state during this event handler execution'
End If

End Sub
End Class

关于c# - 在 Internet Explorer 中打开新的模式对话框窗口时引发哪个事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25176114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com