WindowClosedEventArgs.GetRuntimeId Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Retrieves the UI Automation runtime identifier (ID) associated with this event.
public:
cli::array <int> ^ GetRuntimeId();
public int[] GetRuntimeId ();
member this.GetRuntimeId : unit -> int[]
Public Function GetRuntimeId () As Integer()
Returns
The UI Automation runtime ID of the window on which the event was raised.
Examples
In the following example, the handler for the window-closed event ascertains whether the runtime ID of the closed window is in a list of the IDs of open windows. If the runtime ID is present, it is removed from the list.
/// <summary>
/// Handles window-closed events. Removes the window from the top-level window list.
/// </summary>
/// <param name="sender">Object that raised the event.</param>
/// <param name="e">Event arguments.</param>
/// <remarks>
/// runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
/// </remarks>
private void WindowClosedHandler(object sender, AutomationEventArgs e)
{
WindowClosedEventArgs windowEventArgs = (WindowClosedEventArgs)e;
int[] runtimeIdentifiers = windowEventArgs.GetRuntimeId();
int index = RuntimeIdListed(runtimeIdentifiers, savedRuntimeIds);
if (index >= 0)
{
savedRuntimeIds.RemoveAt(index);
Console.WriteLine("Window closed.");
}
}
/// <summary>
/// Ascertains whether the window is in the list.
/// </summary>
/// <param name="rid">Runtime ID of the window.</param>
/// <returns>Index of the ID in the list, or -1 if it is not listed.</returns>
/// <remarks>
/// runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
/// </remarks>
private int RuntimeIdListed(int[] runtimeId, ArrayList runtimeIds)
{
for (int x = 0; x < runtimeIds.Count; x++)
{
int[] listedId = (int[])runtimeIds[x];
if (Automation.Compare(listedId, runtimeId))
{
return x;
}
}
return -1;
}
''' <summary>
''' Handles window-closed events. Removes the window from the top-level window list.
''' </summary>
''' <param name="sender">Object that raised the event.</param>
''' <param name="e">Event arguments.</param>
''' <remarks>
''' runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
''' </remarks>
Private Sub WindowClosedHandler(ByVal sender As Object, ByVal e As AutomationEventArgs)
Dim windowEventArgs As WindowClosedEventArgs = CType(e, WindowClosedEventArgs)
Dim runtimeIdentifiers As Integer() = windowEventArgs.GetRuntimeId()
Dim index As Integer = RuntimeIdListed(runtimeIdentifiers, savedRuntimeIds)
If index >= 0 Then
savedRuntimeIds.RemoveAt(index)
Console.WriteLine("Window closed.")
End If
End Sub
''' <summary>
''' Ascertains whether the window is in the list.
''' </summary>
''' <param name="rid">Runtime ID of the window.</param>
''' <returns>Index of the ID in the list, or -1 if it is not listed.</returns>
''' <remarks>
''' runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
''' </remarks>
Private Function RuntimeIdListed(ByVal runtimeId() As Integer, ByVal runtimeIds As ArrayList) As Integer
Dim x As Integer
For x = 0 To runtimeIds.Count - 1
Dim listedId As Integer() = CType(runtimeIds(x), Integer())
If Automation.Compare(listedId, runtimeId) Then
Return x
End If
Next x
Return - 1
End Function 'RuntimeIdListed
Remarks
When your application receives a window-closed event, the sender
parameter of the event handler cannot be used to obtain information about the window that has closed, because the corresponding Microsoft UI Automation element is no longer valid. Use GetRuntimeId to match the window with a known identifier.