feat: probe uia3 com for events, caching, walkers, and pattern availability

This is the stack the Rust adapter actually wraps, and it does not agree with
the managed client. Notepad's edit control is a bare Pane with no patterns to
System.Windows.Automation but a Document with Value, Text, Text2, Scroll and
LegacyIAccessible to UIA3 COM, which names the responsible EDIT proxy in
ProviderDescription. Twenty-six nodes versus three. Win32 client-side proxies
are alive here; they are inert only for the managed client, so a managed
census would have recorded false absences for patterns the adapter will see.

The scratch fixture's earlier zero-pattern reading was a fixture artifact
rather than a platform fact: a custom server-side provider suppresses both
client-side proxies and WinForms' own providers. Both fixture modes are
censused so the ledger states the mechanism instead of the symptom.

CacheRequest measures 2.73x against the documented 3-5x, but the headline
number hides the shape: building the cache makes the find phase slower, and
the entire win lands in the read phase at roughly 299x. The claim is wrong in
both directions.

Handler teardown is safe with events in flight, costing 69ms against a
backlog of 281. The hazard is elsewhere: hiding and showing a top-level
window while handlers are registered poisons subsequent removal for up to 86
seconds, superlinearly in repetitions, and cheap callbacks do not avoid it.
A watch implementation needs a teardown timeout rather than an assumption.

Pattern ids are discovered from the OS at runtime rather than hardcoded,
which caught that the annotation availability property is 30118.
This commit is contained in:
Lahfir 2026-07-26 03:56:01 -06:00
parent 9e0a7267a8
commit 7c9dda23f9
16 changed files with 10366 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,435 @@
<#
.SYNOPSIS
Probe 08 (sub-phase 2.0, unit U7): UIA3 COM shim - events/MTA threading,
CacheRequest timing, tree-walker shape, and the authoritative pattern census.
.DESCRIPTION
Compiles probes/windows/08-uia3-com.cs with the in-box pre-Roslyn csc.exe under
/langversion:5 and drives it in five modes. The shim binds UIA3 COM through
hand-declared [ComImport] interfaces and never references the GAC managed
UIAutomationClient assembly, so every number it produces comes from the client
stack the Rust `uiautomation` crate wraps (KTD1).
A managed System.Windows.Automation sweep over the same three targets runs
alongside as an explicitly non-authoritative cross-check, so the COM-vs-managed
divergence is measured in one capture rather than asserted.
Stable invocation contract for U4 (pattern census):
<shim>.exe census --target LABEL=0xHWND [--target ...] [--max-nodes N] [--max-depth N]
stdout is one compact JSON document:
{ stack, binding, coclass, mainThreadId, mainApartment,
discoveredPatternAvailabilityProperties,
result: { mode:"census", targets:[ { label, processId, controlViewNodes,
rawViewNodes, elementsWithAnyPattern,
elementsWithAnyPatternExcludingLegacy, patternTotals,
byControlType:[...], elements:[...] } ] } }
Captures under captures/08-uia3-com/:
ids.json runtime-discovered UIA property/pattern identifier tables
census.json COM pattern census: WinForms (both fixture modes), WPF, Notepad
comparison.json COM vs managed side by side over the same three targets
events.json MTA handler add/remove, event ordering over 20 repetitions
cache-timing.json IUIAutomationCacheRequest vs per-property reads
walker.json ControlView vs RawView vs ContentView node counts on Obsidian
#>
[CmdletBinding()]
param()
$ErrorActionPreference = 'Stop'
. "$PSScriptRoot\common.ps1"
$Probe = '08-uia3-com'
$script:Spawned = New-Object System.Collections.ArrayList
$script:ExplorerWindows = New-Object System.Collections.ArrayList
$script:ObsidianLaunched = $false
function Initialize-Uia3Support {
if ('AgentDesktopProbe.Uia3Support' -as [type]) { return }
$src = @'
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace AgentDesktopProbe {
public static class Uia3Support {
private delegate bool EnumProc(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll")] private static extern bool EnumWindows(EnumProc cb, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern int GetClassNameW(IntPtr hWnd, StringBuilder buf, int max);
[DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern int GetWindowTextW(IntPtr hWnd, StringBuilder buf, int max);
[DllImport("user32.dll")] private static extern bool IsWindowVisible(IntPtr hWnd);
[DllImport("user32.dll")] private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint pid);
[DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern bool PostMessageW(IntPtr hWnd, uint msg, IntPtr w, IntPtr l);
public static string ClassOf(IntPtr h) { StringBuilder b = new StringBuilder(256); GetClassNameW(h, b, 256); return b.ToString(); }
public static string TitleOf(IntPtr h) { StringBuilder b = new StringBuilder(512); GetWindowTextW(h, b, 512); return b.ToString(); }
public static int PidOf(IntPtr h) { uint p; GetWindowThreadProcessId(h, out p); return (int)p; }
public static void Close(IntPtr h) { PostMessageW(h, 0x0010, IntPtr.Zero, IntPtr.Zero); }
public static IntPtr[] TopLevelWindows() {
List<IntPtr> found = new List<IntPtr>();
EnumWindows(delegate(IntPtr h, IntPtr l) {
if (IsWindowVisible(h)) { found.Add(h); }
return true;
}, IntPtr.Zero);
return found.ToArray();
}
}
}
'@
Add-Type -TypeDefinition $src -Language CSharp | Out-Null
}
function Find-ProbeWindow {
param([int]$ProcessId = 0, [string]$ClassPattern = '', [string]$TitlePattern = '', [int]$TimeoutSec = 20)
Initialize-Uia3Support
$deadline = (Get-Date).AddSeconds($TimeoutSec)
while ((Get-Date) -lt $deadline) {
foreach ($h in [AgentDesktopProbe.Uia3Support]::TopLevelWindows()) {
if ($ProcessId -gt 0 -and [AgentDesktopProbe.Uia3Support]::PidOf($h) -ne $ProcessId) { continue }
if ($ClassPattern -and ([AgentDesktopProbe.Uia3Support]::ClassOf($h) -notmatch $ClassPattern)) { continue }
$title = [AgentDesktopProbe.Uia3Support]::TitleOf($h)
if ($TitlePattern -and ($title -notmatch $TitlePattern)) { continue }
if (-not $TitlePattern -and -not $title) { continue }
return $h
}
Start-Sleep -Milliseconds 300
}
return [IntPtr]::Zero
}
function Get-ShellFolderWindows {
Initialize-Uia3Support
$found = New-Object System.Collections.ArrayList
foreach ($h in [AgentDesktopProbe.Uia3Support]::TopLevelWindows()) {
$cls = [AgentDesktopProbe.Uia3Support]::ClassOf($h)
if ($cls -eq 'CabinetWClass' -or $cls -eq 'ExploreWClass') { [void]$found.Add($h) }
}
return $found.ToArray()
}
function Start-TrackedScratch {
param([string]$FilePath, [string[]]$ArgumentList = @(), [int]$TimeoutSec = 20)
$p = Start-ScratchProcess -FilePath $FilePath -ArgumentList $ArgumentList -NoActivate -TimeoutSec $TimeoutSec
[void]$script:Spawned.Add($p.ProcessId)
return [pscustomobject]@{ ProcessId = $p.ProcessId; MainWindowHandle = $p.MainWindowHandle }
}
function ConvertTo-HandleHex {
param([IntPtr]$Handle)
return ('0x' + $Handle.ToInt64().ToString('x'))
}
function Invoke-Shim {
param([string]$ExePath, [string[]]$ShimArgs, [int]$TimeoutSec = 620)
$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.FileName = $ExePath
$psi.Arguments = ($ShimArgs | ForEach-Object { if ($_ -match '\s') { '"' + $_ + '"' } else { $_ } }) -join ' '
$psi.UseShellExecute = $false
$psi.RedirectStandardOutput = $true
$psi.RedirectStandardError = $true
$psi.CreateNoWindow = $true
$proc = [System.Diagnostics.Process]::Start($psi)
[void]$script:Spawned.Add($proc.Id)
$stdout = $proc.StandardOutput.ReadToEnd()
$stderr = $proc.StandardError.ReadToEnd()
if (-not $proc.WaitForExit($TimeoutSec * 1000)) {
try { $proc.Kill() } catch { }
throw ('shim mode ' + $ShimArgs[0] + ' exceeded ' + $TimeoutSec + 's')
}
if ($proc.ExitCode -ne 0) {
throw ('shim mode ' + $ShimArgs[0] + ' exited ' + $proc.ExitCode + ': ' + $stderr)
}
if ($stderr) { Write-ProbeLog -Message ('shim ' + $ShimArgs[0] + ' stderr: ' + $stderr.Trim()) -Level 'warn' }
return ($stdout | ConvertFrom-Json)
}
function Get-ManagedCensus {
param([string]$Label, [IntPtr]$Handle)
Add-Type -AssemblyName UIAutomationClient -ErrorAction SilentlyContinue
Add-Type -AssemblyName UIAutomationTypes -ErrorAction SilentlyContinue
$row = [ordered]@{ label = $Label; stack = 'managed-System.Windows.Automation'; authoritative = $false }
try {
$root = [System.Windows.Automation.AutomationElement]::FromHandle($Handle)
$walker = [System.Windows.Automation.TreeWalker]::RawViewWalker
$stack = New-Object System.Collections.Stack
$stack.Push($root)
$count = 0
$withPattern = 0
$types = @{}
while ($stack.Count -gt 0 -and $count -lt 400) {
$node = $stack.Pop()
$count++
$patterns = @($node.GetSupportedPatterns())
if ($patterns.Count -gt 0) { $withPattern++ }
$tn = $node.Current.ControlType.ProgrammaticName -replace '^ControlType\.', ''
if ($types.ContainsKey($tn)) { $types[$tn] = $types[$tn] + 1 } else { $types[$tn] = 1 }
$child = $walker.GetFirstChild($node)
while ($child -ne $null) {
$stack.Push($child)
$child = $walker.GetNextSibling($child)
}
}
$row['rawViewNodes'] = $count
$row['elementsWithAnyPattern'] = $withPattern
$row['controlTypes'] = $types
} catch {
$row['error'] = $_.Exception.Message
}
return $row
}
$status = 'ok'
$message = ''
$summary = [ordered]@{}
try {
$captureDir = Get-CaptureDir -Probe $Probe
Write-ProbeLog -Message ('capture dir ' + $captureDir)
$csc = Join-Path $env:WINDIR 'Microsoft.NET\Framework64\v4.0.30319\csc.exe'
if (-not (Test-Path -LiteralPath $csc)) { throw ('csc.exe not found at ' + $csc) }
$cscVersion = (Get-Item -LiteralPath $csc).VersionInfo.FileVersion
$buildDir = Join-Path $env:TEMP 'agent-desktop-uia3'
if (-not (Test-Path -LiteralPath $buildDir)) { New-Item -ItemType Directory -Path $buildDir -Force | Out-Null }
$shim = Join-Path $buildDir '08-uia3-com.exe'
$source = Join-Path $PSScriptRoot '08-uia3-com.cs'
$cscArgs = @('/nologo', '/target:exe', '/langversion:5', '/platform:anycpu', ('/out:' + $shim),
'/reference:System.dll', '/reference:System.Core.dll', $source)
$compilerOutput = (& $csc $cscArgs 2>&1 | Out-String).Trim()
if ($LASTEXITCODE -ne 0) { throw ('csc.exe failed (' + $LASTEXITCODE + '): ' + $compilerOutput) }
Write-ProbeLog -Message ('compiled shim with csc ' + $cscVersion + ' under /langversion:5')
$scratchExe = Join-Path $PSScriptRoot 'scratch\bin\ScratchForms.exe'
if (-not (Test-Path -LiteralPath $scratchExe)) {
Write-ProbeLog -Message 'building scratch WinForms fixture'
& powershell -NoProfile -ExecutionPolicy Bypass -File (Join-Path $PSScriptRoot 'scratch\build-scratch.ps1') | Out-Null
}
if (-not (Test-Path -LiteralPath $scratchExe)) { throw ('scratch fixture missing at ' + $scratchExe) }
# --- identifier tables -------------------------------------------------
$ids = Invoke-Shim -ExePath $shim -ShimArgs @('ids')
Write-ProbeJson -Probe $Probe -Name 'ids.json' -InputObject $ids | Out-Null
$summary['coclass'] = $ids.coclass
$summary['patternAvailabilityPropertiesDiscovered'] = $ids.discoveredPatternAvailabilityProperties
# --- pattern census (U4 consumes this mode) ----------------------------
$winDefault = Start-TrackedScratch -FilePath $scratchExe -ArgumentList @('--tag', 'u7-default', '--pos', '40,40')
$winHosted = Start-TrackedScratch -FilePath $scratchExe -ArgumentList @('--tag', 'u7-hosted', '--pos', '840,40', '--host-providers')
$wpfArgs = @('-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', (Join-Path $PSScriptRoot 'scratch\ScratchWpf.ps1'),
'-Tag', 'u7', '-Left', '40', '-Top', '600', '-TimeoutSeconds', '300')
$wpf = Start-TrackedScratch -FilePath 'powershell.exe' -ArgumentList $wpfArgs
$wpfWindow = Find-ProbeWindow -ProcessId $wpf.ProcessId -TitlePattern 'AgentDesktop Scratch WPF'
$notepad = Start-TrackedScratch -FilePath (Join-Path $env:WINDIR 'System32\notepad.exe')
if ($wpfWindow -eq [IntPtr]::Zero) { throw 'WPF scratch window never appeared' }
if ($winDefault.MainWindowHandle -eq [IntPtr]::Zero) { throw 'WinForms default-mode window never appeared' }
if ($winHosted.MainWindowHandle -eq [IntPtr]::Zero) { throw 'WinForms host-providers window never appeared' }
if ($notepad.MainWindowHandle -eq [IntPtr]::Zero) { throw 'notepad window never appeared' }
$censusArgs = @('census',
'--target', ('winforms-default=' + (ConvertTo-HandleHex $winDefault.MainWindowHandle)),
'--target', ('winforms-host-providers=' + (ConvertTo-HandleHex $winHosted.MainWindowHandle)),
'--target', ('wpf=' + (ConvertTo-HandleHex $wpfWindow)),
'--target', ('notepad=' + (ConvertTo-HandleHex $notepad.MainWindowHandle)),
'--max-nodes', '300', '--max-depth', '30')
$census = Invoke-Shim -ExePath $shim -ShimArgs $censusArgs
Write-ProbeJson -Probe $Probe -Name 'census.json' -InputObject $census | Out-Null
$comRows = @()
foreach ($t in $census.result.targets) {
$comRows += [ordered]@{
label = $t.label
stack = 'uia3-com'
authoritative = $true
rawViewNodes = $t.rawViewNodes
controlViewNodes = $t.controlViewNodes
elementsWithAnyPattern = $t.elementsWithAnyPattern
elementsWithAnyPatternExcludingLegacy = $t.elementsWithAnyPatternExcludingLegacy
}
}
$managedRows = @(
(Get-ManagedCensus -Label 'winforms-default' -Handle $winDefault.MainWindowHandle),
(Get-ManagedCensus -Label 'winforms-host-providers' -Handle $winHosted.MainWindowHandle),
(Get-ManagedCensus -Label 'wpf' -Handle $wpfWindow),
(Get-ManagedCensus -Label 'notepad' -Handle $notepad.MainWindowHandle)
)
$comparison = [ordered]@{
question = 'do UIA3 COM and managed System.Windows.Automation report the same pattern availability on this VM'
note = 'COM rows are authoritative (KTD1); managed rows are a labeled non-authoritative cross-check'
com = $comRows
managed = $managedRows
}
$diverged = $false
foreach ($c in $comRows) {
$m = $managedRows | Where-Object { $_.label -eq $c.label } | Select-Object -First 1
if ($m -and $m.elementsWithAnyPattern -ne $c.elementsWithAnyPattern) { $diverged = $true }
}
$comparison['stacksDiverge'] = $diverged
Write-ProbeJson -Probe $Probe -Name 'comparison.json' -InputObject $comparison | Out-Null
$summary['stacksDiverge'] = $diverged
Stop-ScratchProcess -ProcessId $winDefault.ProcessId
Stop-ScratchProcess -ProcessId $wpf.ProcessId
Stop-ScratchProcess -ProcessId $notepad.ProcessId
# --- events / MTA threading -------------------------------------------
$events = Invoke-Shim -ExePath $shim -ShimArgs @('events', '--hwnd', (ConvertTo-HandleHex $winHosted.MainWindowHandle), '--reps', '20')
Write-ProbeJson -Probe $Probe -Name 'events.json' -InputObject $events | Out-Null
$noWindowChurn = Invoke-Shim -ExePath $shim -ShimArgs @('events', '--hwnd', (ConvertTo-HandleHex $winHosted.MainWindowHandle), '--reps', '20', '--drive', 'vcf')
$windowChurnOnly = Invoke-Shim -ExePath $shim -ShimArgs @('events', '--hwnd', (ConvertTo-HandleHex $winHosted.MainWindowHandle), '--reps', '20', '--drive', 'w', '--cheap-callbacks')
$isolation = [ordered]@{
question = 'what makes RemoveXEventHandler on the MTA worker block for tens of seconds'
method = 'same 20-repetition drive loop with one action class removed at a time; teardown timed per handler on the registering thread'
arms = @(
[ordered]@{
arm = 'full drive loop (value + click + focus + window hide/show), property reads inside callbacks'
driveActions = $events.result.driveActions
cheapCallbacks = $events.result.cheapCallbacks
totalEvents = $events.result.totalEvents
quiescentTeardownElapsedMs = $events.result.quiescentTeardownElapsedMs
inflightTeardownElapsedMs = $events.result.inflightTeardownElapsedMs
quiescentTeardownPerHandler = $events.result.quiescentTeardownPerHandler
},
[ordered]@{
arm = 'no window hide/show (value + click + focus only)'
driveActions = $noWindowChurn.result.driveActions
cheapCallbacks = $noWindowChurn.result.cheapCallbacks
totalEvents = $noWindowChurn.result.totalEvents
quiescentTeardownElapsedMs = $noWindowChurn.result.quiescentTeardownElapsedMs
inflightTeardownElapsedMs = $noWindowChurn.result.inflightTeardownElapsedMs
quiescentTeardownPerHandler = $noWindowChurn.result.quiescentTeardownPerHandler
},
[ordered]@{
arm = 'window hide/show only, with callbacks that do no property reads'
driveActions = $windowChurnOnly.result.driveActions
cheapCallbacks = $windowChurnOnly.result.cheapCallbacks
totalEvents = $windowChurnOnly.result.totalEvents
quiescentTeardownElapsedMs = $windowChurnOnly.result.quiescentTeardownElapsedMs
inflightTeardownElapsedMs = $windowChurnOnly.result.inflightTeardownElapsedMs
quiescentTeardownPerHandler = $windowChurnOnly.result.quiescentTeardownPerHandler
}
)
}
Write-ProbeJson -Probe $Probe -Name 'events-teardown-isolation.json' -InputObject $isolation | Out-Null
$summary['quiescentTeardownElapsedMsNoWindowChurn'] = $noWindowChurn.result.quiescentTeardownElapsedMs
$summary['quiescentTeardownElapsedMsWindowChurnOnly'] = $windowChurnOnly.result.quiescentTeardownElapsedMs
$summary['orderingStableAcrossReps'] = $events.result.orderingStableAcrossReps
$summary['orderingStableExcludingWindowEvents'] = $events.result.orderingStableExcludingWindowEvents
$summary['quiescentTeardownCompleted'] = $events.result.quiescentTeardownCompleted
$summary['quiescentTeardownElapsedMs'] = $events.result.quiescentTeardownElapsedMs
$summary['inflightTeardownCompletedUnderLoad'] = $events.result.inflightTeardownCompletedUnderLoad
$summary['eventThreadsDistinctFromMain'] = $events.result.eventThreadsDistinctFromMain
Stop-ScratchProcess -ProcessId $winHosted.ProcessId
# --- CacheRequest timing on Explorer ----------------------------------
$explorerHandle = [IntPtr]::Zero
$explorerKind = ''
Initialize-Uia3Support
$preExisting = @(Get-ShellFolderWindows)
try {
Start-Process -FilePath (Join-Path $env:WINDIR 'explorer.exe') -ArgumentList (Join-Path $env:WINDIR 'System32') | Out-Null
$deadline = (Get-Date).AddSeconds(30)
while ((Get-Date) -lt $deadline) {
foreach ($w in (Get-ShellFolderWindows)) {
if ($preExisting -notcontains $w) { [void]$script:ExplorerWindows.Add($w) }
}
if ($script:ExplorerWindows.Count -gt 0) { break }
Start-Sleep -Milliseconds 500
}
if ($script:ExplorerWindows.Count -gt 0) {
Start-Sleep -Seconds 2
$explorerHandle = $script:ExplorerWindows[0]
$explorerKind = 'probe-opened folder window (CabinetWClass) over %WINDIR%\System32, closed in teardown'
}
} catch {
Write-ProbeLog -Message ('could not open an Explorer folder window: ' + $_.Exception.Message) -Level 'warn'
}
if ($explorerHandle -eq [IntPtr]::Zero) {
$explorerHandle = Find-ProbeWindow -ClassPattern '^Shell_TrayWnd$' -TitlePattern '.*' -TimeoutSec 5
$explorerKind = 'existing shell taskbar (Shell_TrayWnd), read-only'
}
if ($explorerHandle -eq [IntPtr]::Zero) { throw 'no Explorer-owned window available for the cache-timing measurement' }
$cache = Invoke-Shim -ExePath $shim -ShimArgs @('cache', '--hwnd', (ConvertTo-HandleHex $explorerHandle), '--label', 'explorer', '--max-nodes', '1500', '--reps', '5')
$cacheCapture = [ordered]@{
target = 'explorer.exe'
targetKind = $explorerKind
shim = $cache
}
Write-ProbeJson -Probe $Probe -Name 'cache-timing.json' -InputObject $cacheCapture | Out-Null
$summary['cacheTimingMultiplier'] = $cache.result.timingMultiplier
$summary['cacheClaimVerdict'] = $cache.result.claimVerdict
# --- walker shape on Obsidian -----------------------------------------
$obsidianExe = Join-Path $env:LOCALAPPDATA 'Programs\Obsidian\Obsidian.exe'
$obsidianPreexisting = $false
$obsidianWindow = [IntPtr]::Zero
$obsidianProcessId = 0
$existing = @(Get-Process -Name 'Obsidian' -ErrorAction SilentlyContinue | Where-Object { $_.MainWindowHandle -ne [IntPtr]::Zero })
if ($existing.Count -gt 0) {
$obsidianPreexisting = $true
$obsidianWindow = $existing[0].MainWindowHandle
$obsidianProcessId = $existing[0].Id
Write-ProbeLog -Message 'Obsidian already running - walking the existing process read-only'
} elseif (Test-Path -LiteralPath $obsidianExe) {
$obs = Start-TrackedScratch -FilePath $obsidianExe -TimeoutSec 40
$obsidianProcessId = $obs.ProcessId
$script:ObsidianLaunched = $true
$obsidianWindow = Find-ProbeWindow -ClassPattern '^Chrome_WidgetWin_1$' -TitlePattern 'Obsidian' -TimeoutSec 60
Start-Sleep -Seconds 5
}
if ($obsidianWindow -eq [IntPtr]::Zero) {
Write-ProbeLog -Message 'Obsidian window unavailable - walker mode falls back to the WinForms fixture' -Level 'warn'
$fallback = Start-TrackedScratch -FilePath $scratchExe -ArgumentList @('--tag', 'u7-walker', '--pos', '40,40')
$obsidianWindow = $fallback.MainWindowHandle
$walkerTarget = 'winforms-scratch-fallback'
} else {
$walkerTarget = 'obsidian'
}
$walker = Invoke-Shim -ExePath $shim -ShimArgs @('walker', '--hwnd', (ConvertTo-HandleHex $obsidianWindow), '--label', $walkerTarget, '--max-nodes', '20000', '--max-depth', '60')
$walkerCapture = [ordered]@{
target = $walkerTarget
obsidianPreexisting = $obsidianPreexisting
obsidianVersion = ''
shim = $walker
}
if (Test-Path -LiteralPath $obsidianExe) {
$walkerCapture['obsidianVersion'] = (Get-Item -LiteralPath $obsidianExe).VersionInfo.ProductVersion
}
Write-ProbeJson -Probe $Probe -Name 'walker.json' -InputObject $walkerCapture | Out-Null
foreach ($v in $walker.result.viewsAfterSettle) {
$summary[('walker_' + $v.view)] = $v.nodeCount
}
$summary['compiler'] = $cscVersion
$message = 'uia3 com shim: census+comparison+events+cache+walker captured'
} catch {
$status = 'fail'
$message = ($_.Exception.Message -replace '[\r\n]+', ' ')
Write-ProbeLog -Message ('probe failed: ' + $message) -Level 'error'
} finally {
foreach ($w in @($script:ExplorerWindows)) {
try {
Initialize-Uia3Support
[AgentDesktopProbe.Uia3Support]::Close($w)
} catch { }
}
if ($script:ObsidianLaunched) {
foreach ($p in @(Get-Process -Name 'Obsidian' -ErrorAction SilentlyContinue)) {
try { Stop-Process -Id $p.Id -Force -ErrorAction Stop } catch { }
}
}
foreach ($id in @($script:Spawned)) {
try { Stop-ScratchProcess -ProcessId $id } catch { Write-ProbeLog -Message ('teardown: ' + $_.Exception.Message) -Level 'warn' }
}
foreach ($f in @(Get-ChildItem -LiteralPath (Get-CaptureDir -Probe $Probe) -File -ErrorAction SilentlyContinue)) {
if ($f.Name -like '*.normalized') { continue }
if (-not (Test-CaptureRedaction -Path $f.FullName)) { $status = 'fail'; $message = ('redaction residue in ' + $f.Name) }
}
}
Write-ProbeResult -Probe $Probe -Status $status -Message $message -Data $summary
if ($status -eq 'fail') { exit 1 }
exit 0

View file

@ -0,0 +1,31 @@
{
"target": "explorer.exe",
"targetKind": "probe-opened folder window (CabinetWClass) over %WINDIR%\\System32, closed in teardown",
"shim": {
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 8356,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"mode": "cache",
"label": "explorer",
"hwnd": "0x3503aa",
"nodeCount": 220,
"propertiesPerNode": 8,
"propertyNames": "Name,ControlType,AutomationId,ClassName,BoundingRectangle,IsEnabled,IsOffscreen,FrameworkId",
"repetitions": 5,
"perPropertyMs": 489.0013,
"cachedMs": 181.4986,
"timingPerPropertyFindMs": 117.3772,
"timingCachedFindMs": 180.2522,
"timingPerPropertyReadMs": 371.6241,
"timingCachedReadMs": 1.2464,
"timingReadPhaseMultiplier": 298.158,
"timingMultiplier": 2.6942,
"claimVerdict": "below-3x-claim",
"claimChecked": "phases.md 3-5x batched-read speedup"
}
}
}

View file

@ -0,0 +1,31 @@
{
"target": "explorer.exe",
"targetKind": "probe-opened folder window (CabinetWClass) over %WINDIR%\\System32, closed in teardown",
"shim": {
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 8356,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"mode": "cache",
"label": "explorer",
"hwnd": "<hwnd>",
"nodeCount": 220,
"propertiesPerNode": 8,
"propertyNames": "Name,ControlType,AutomationId,ClassName,BoundingRectangle,IsEnabled,IsOffscreen,FrameworkId",
"repetitions": 5,
"perPropertyMs": <duration>,
"cachedMs": <duration>,
"timingPerPropertyFindMs": <duration>,
"timingCachedFindMs": <duration>,
"timingPerPropertyReadMs": <duration>,
"timingCachedReadMs": <duration>,
"timingReadPhaseMultiplier": <duration>,
"timingMultiplier": <duration>,
"claimVerdict": "below-3x-claim",
"claimChecked": "phases.md 3-5x batched-read speedup"
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,100 @@
{
"question": "do UIA3 COM and managed System.Windows.Automation report the same pattern availability on this VM",
"note": "COM rows are authoritative (KTD1); managed rows are a labeled non-authoritative cross-check",
"com": [
{
"label": "winforms-default",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 35,
"controlViewNodes": 35,
"elementsWithAnyPattern": 35,
"elementsWithAnyPatternExcludingLegacy": 11
},
{
"label": "winforms-host-providers",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 46,
"controlViewNodes": 46,
"elementsWithAnyPattern": 46,
"elementsWithAnyPatternExcludingLegacy": 37
},
{
"label": "wpf",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 34,
"controlViewNodes": 32,
"elementsWithAnyPattern": 34,
"elementsWithAnyPatternExcludingLegacy": 33
},
{
"label": "notepad",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 26,
"controlViewNodes": 26,
"elementsWithAnyPattern": 26,
"elementsWithAnyPatternExcludingLegacy": 18
}
],
"managed": [
{
"label": "winforms-default",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 24,
"elementsWithAnyPattern": 1,
"controlTypes": {
"Pane": 23,
"Window": 1
}
},
{
"label": "winforms-host-providers",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 26,
"elementsWithAnyPattern": 3,
"controlTypes": {
"Text": 6,
"ComboBox": 1,
"Button": 1,
"Window": 1,
"Pane": 17
}
},
{
"label": "wpf",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 28,
"elementsWithAnyPattern": 28,
"controlTypes": {
"CheckBox": 1,
"Text": 9,
"ComboBox": 1,
"List": 1,
"Button": 2,
"Pane": 2,
"Edit": 2,
"Window": 1,
"ListItem": 5,
"ScrollBar": 4
}
},
{
"label": "notepad",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 3,
"elementsWithAnyPattern": 1,
"controlTypes": {
"Pane": 2,
"Window": 1
}
}
],
"stacksDiverge": true
}

View file

@ -0,0 +1,100 @@
{
"question": "do UIA3 COM and managed System.Windows.Automation report the same pattern availability on this VM",
"note": "COM rows are authoritative (KTD1); managed rows are a labeled non-authoritative cross-check",
"com": [
{
"label": "winforms-default",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 35,
"controlViewNodes": 35,
"elementsWithAnyPattern": 35,
"elementsWithAnyPatternExcludingLegacy": 11
},
{
"label": "winforms-host-providers",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 46,
"controlViewNodes": 46,
"elementsWithAnyPattern": 46,
"elementsWithAnyPatternExcludingLegacy": 37
},
{
"label": "wpf",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 34,
"controlViewNodes": 32,
"elementsWithAnyPattern": 34,
"elementsWithAnyPatternExcludingLegacy": 33
},
{
"label": "notepad",
"stack": "uia3-com",
"authoritative": true,
"rawViewNodes": 26,
"controlViewNodes": 26,
"elementsWithAnyPattern": 26,
"elementsWithAnyPatternExcludingLegacy": 18
}
],
"managed": [
{
"label": "winforms-default",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 24,
"elementsWithAnyPattern": 1,
"controlTypes": {
"Pane": 23,
"Window": 1
}
},
{
"label": "winforms-host-providers",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 26,
"elementsWithAnyPattern": 3,
"controlTypes": {
"Text": 6,
"ComboBox": 1,
"Button": 1,
"Window": 1,
"Pane": 17
}
},
{
"label": "wpf",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 28,
"elementsWithAnyPattern": 28,
"controlTypes": {
"CheckBox": 1,
"Text": 9,
"ComboBox": 1,
"List": 1,
"Button": 2,
"Pane": 2,
"Edit": 2,
"Window": 1,
"ListItem": 5,
"ScrollBar": 4
}
},
{
"label": "notepad",
"stack": "managed-System.Windows.Automation",
"authoritative": false,
"rawViewNodes": 3,
"elementsWithAnyPattern": 1,
"controlTypes": {
"Pane": 2,
"Window": 1
}
}
],
"stacksDiverge": true
}

View file

@ -0,0 +1,120 @@
{
"question": "what makes RemoveXEventHandler on the MTA worker block for tens of seconds",
"method": "same 20-repetition drive loop with one action class removed at a time; teardown timed per handler on the registering thread",
"arms": [
{
"arm": "full drive loop (value + click + focus + window hide/show), property reads inside callbacks",
"driveActions": "vcfw",
"cheapCallbacks": false,
"totalEvents": 557,
"quiescentTeardownElapsedMs": 86184.2359,
"inflightTeardownElapsedMs": 72.4894,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": 8487.4945
},
{
"handler": "Text_TextChanged",
"elapsedMs": 9586.8329
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": 10374.2025
},
{
"handler": "Window_WindowOpened",
"elapsedMs": 21078.9415
},
{
"handler": "Window_WindowClosed",
"elapsedMs": 26631.8655
},
{
"handler": "PropertyChanged",
"elapsedMs": 9999.5944
},
{
"handler": "FocusChanged",
"elapsedMs": 22.8593
}
]
},
{
"arm": "no window hide/show (value + click + focus only)",
"driveActions": "vcf",
"cheapCallbacks": false,
"totalEvents": 532,
"quiescentTeardownElapsedMs": 63.7518,
"inflightTeardownElapsedMs": 69.5929,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": 15.1329
},
{
"handler": "Text_TextChanged",
"elapsedMs": 8.0778
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": 6.9446
},
{
"handler": "Window_WindowOpened",
"elapsedMs": 6.8124
},
{
"handler": "Window_WindowClosed",
"elapsedMs": 6.6948
},
{
"handler": "PropertyChanged",
"elapsedMs": 8.4991
},
{
"handler": "FocusChanged",
"elapsedMs": 9.3746
}
]
},
{
"arm": "window hide/show only, with callbacks that do no property reads",
"driveActions": "w",
"cheapCallbacks": true,
"totalEvents": 490,
"quiescentTeardownElapsedMs": 22757.3847,
"inflightTeardownElapsedMs": 99.6363,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": 2521.5184
},
{
"handler": "Text_TextChanged",
"elapsedMs": 2480.4681
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": 2515.5508
},
{
"handler": "Window_WindowOpened",
"elapsedMs": 5928.1936
},
{
"handler": "Window_WindowClosed",
"elapsedMs": 7430.8029
},
{
"handler": "PropertyChanged",
"elapsedMs": 1864.7159
},
{
"handler": "FocusChanged",
"elapsedMs": 13.6723
}
]
}
]
}

View file

@ -0,0 +1,120 @@
{
"question": "what makes RemoveXEventHandler on the MTA worker block for tens of seconds",
"method": "same 20-repetition drive loop with one action class removed at a time; teardown timed per handler on the registering thread",
"arms": [
{
"arm": "full drive loop (value + click + focus + window hide/show), property reads inside callbacks",
"driveActions": "vcfw",
"cheapCallbacks": false,
"totalEvents": 557,
"quiescentTeardownElapsedMs": 86184.2359,
"inflightTeardownElapsedMs": 72.4894,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": <duration>
},
{
"handler": "Text_TextChanged",
"elapsedMs": <duration>
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowOpened",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowClosed",
"elapsedMs": <duration>
},
{
"handler": "PropertyChanged",
"elapsedMs": <duration>
},
{
"handler": "FocusChanged",
"elapsedMs": <duration>
}
]
},
{
"arm": "no window hide/show (value + click + focus only)",
"driveActions": "vcf",
"cheapCallbacks": false,
"totalEvents": 532,
"quiescentTeardownElapsedMs": 63.7518,
"inflightTeardownElapsedMs": 69.5929,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": <duration>
},
{
"handler": "Text_TextChanged",
"elapsedMs": <duration>
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowOpened",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowClosed",
"elapsedMs": <duration>
},
{
"handler": "PropertyChanged",
"elapsedMs": <duration>
},
{
"handler": "FocusChanged",
"elapsedMs": <duration>
}
]
},
{
"arm": "window hide/show only, with callbacks that do no property reads",
"driveActions": "w",
"cheapCallbacks": true,
"totalEvents": 490,
"quiescentTeardownElapsedMs": 22757.3847,
"inflightTeardownElapsedMs": 99.6363,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": <duration>
},
{
"handler": "Text_TextChanged",
"elapsedMs": <duration>
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowOpened",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowClosed",
"elapsedMs": <duration>
},
{
"handler": "PropertyChanged",
"elapsedMs": <duration>
},
{
"handler": "FocusChanged",
"elapsedMs": <duration>
}
]
}
]
}

View file

@ -0,0 +1,804 @@
{
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 2868,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"mode": "events",
"repetitions": 20,
"cheapCallbacks": false,
"driveActions": "vcfw",
"callbackWork": "reads AutomationId+ControlType+ProcessId on sender inside the callback",
"targetHwnd": "0x1800e6",
"targetProcessId": 6008,
"workerThreadId": 7552,
"workerApartment": "MTA",
"watchedProperties": "Name=30005,ValuePattern.Value=30045,TogglePattern.ToggleState=30086,HasKeyboardFocus=30008,RangeValuePattern.Value=30047",
"totalEvents": 557,
"distinctEventThreadCount": 4,
"eventThreadsDistinctFromMain": true,
"eventThreadsDistinctFromWorker": false,
"kindTotals": {
"AutomationEvent:Window_WindowClosed": 10,
"AutomationEvent:Window_WindowOpened": 7,
"FocusChanged": 42,
"PropertyChanged:Name": 180,
"PropertyChanged:ValuePattern.Value": 318
},
"orderingStableAcrossReps": false,
"distinctOrderingSignatures": 6,
"orderingStableExcludingWindowEvents": true,
"distinctCoreOrderingSignatures": 1,
"orderingPerRep": [
{
"rep": 0,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 1,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 2,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 3,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 4,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed"
},
{
"rep": 5,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eAutomationEvent:Window_WindowOpened\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed"
},
{
"rep": 6,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 7,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowOpened\u003eAutomationEvent:Window_WindowClosed"
},
{
"rep": 8,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 9,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 10,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 11,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 12,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 13,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 14,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 15,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 16,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 17,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 18,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 19,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eAutomationEvent:Window_WindowOpened\u003eAutomationEvent:Window_WindowClosed\u003eFocusChanged"
}
],
"quiescentTeardownCompleted": true,
"quiescentTeardownElapsedMs": 86184.2359,
"inflightTeardownCompletedUnderLoad": true,
"inflightTeardownCompletedOnlyAfterLoadStopped": false,
"inflightTeardownElapsedMs": 72.4894,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": 8487.4945
},
{
"handler": "Text_TextChanged",
"elapsedMs": 9586.8329
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": 10374.2025
},
{
"handler": "Window_WindowOpened",
"elapsedMs": 21078.9415
},
{
"handler": "Window_WindowClosed",
"elapsedMs": 26631.8655
},
{
"handler": "PropertyChanged",
"elapsedMs": 9999.5944
},
{
"handler": "FocusChanged",
"elapsedMs": 22.8593
}
],
"inflightTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": 16.061
},
{
"handler": "Text_TextChanged",
"elapsedMs": 9.7971
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": 8.9853
},
{
"handler": "Window_WindowOpened",
"elapsedMs": 7.219
},
{
"handler": "Window_WindowClosed",
"elapsedMs": 10.198
},
{
"handler": "PropertyChanged",
"elapsedMs": 9.2494
},
{
"handler": "FocusChanged",
"elapsedMs": 10.7618
}
],
"inflightEventBacklogAtTeardown": 296,
"eventsDuringTeardownWindow": 300,
"workerErrors": "",
"sample": [
{
"seq": 0,
"rep": 0,
"label": "FocusChanged",
"threadId": 7552,
"elapsedMs": 67.4963,
"senderAutomationId": "ImmersiveBackground",
"senderControlType": "Button",
"senderIsTarget": false
},
{
"seq": 1,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 490.1137,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 2,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 494.1919,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 3,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 614.3486,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 4,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 618.5844,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 5,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 623.4841,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 6,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 627.1939,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 7,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 735.2428,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 8,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 739.2361,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 9,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 744.2327,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 10,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 748.1971,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 11,
"rep": 0,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 875.5431,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 12,
"rep": 0,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 961.8247,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 13,
"rep": 0,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": 4128,
"elapsedMs": 1088.459,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 14,
"rep": 0,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": 4128,
"elapsedMs": 1265.5937,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 15,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 1505.3898,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 16,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 1509.2421,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 17,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 1632.2378,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 18,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 1636.2579,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 19,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 1641.7355,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 20,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 1646.048,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 21,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 1756.7018,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 22,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 1760.3131,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 23,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 1765.7302,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 24,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 1770.3826,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 25,
"rep": 1,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 1883.1211,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 26,
"rep": 1,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 1977.1086,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 27,
"rep": 1,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": 4128,
"elapsedMs": 2098.8285,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 28,
"rep": 1,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": 4128,
"elapsedMs": 2298.7174,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 29,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 2530.6733,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 30,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 2534.6218,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 31,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 2659.1352,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 32,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 2664.3413,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 33,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 2670.6957,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 34,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 2675.2406,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 35,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 2781.5169,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 36,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 2785.6152,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 37,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 2790.5206,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 38,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 2794.4832,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 39,
"rep": 2,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 2907.7323,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 40,
"rep": 2,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 3002.2669,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 41,
"rep": 2,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": 4128,
"elapsedMs": 3123.6855,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 42,
"rep": 2,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": 4128,
"elapsedMs": 3371.1046,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 43,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 3546.4762,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 44,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 3550.5912,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 45,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 3673.1608,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 46,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 3677.3123,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 47,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 3682.663,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 48,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 3686.991,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 49,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 3798.1253,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 50,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 3802.3073,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 51,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 3807.9026,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 52,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 3811.8923,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 53,
"rep": 3,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 3924.1694,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 54,
"rep": 3,
"label": "FocusChanged",
"threadId": 6336,
"elapsedMs": 4019.1518,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 55,
"rep": 3,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": 4128,
"elapsedMs": 4151.8203,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 56,
"rep": 3,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": 4128,
"elapsedMs": 4527.8027,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 57,
"rep": 4,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 4577.7505,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 58,
"rep": 4,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": 6336,
"elapsedMs": 4581.5118,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 59,
"rep": 4,
"label": "PropertyChanged:Name",
"threadId": 6336,
"elapsedMs": 4704.5109,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
}
]
}
}

View file

@ -0,0 +1,804 @@
{
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 2868,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"mode": "events",
"repetitions": 20,
"cheapCallbacks": false,
"driveActions": "vcfw",
"callbackWork": "reads AutomationId+ControlType+ProcessId on sender inside the callback",
"targetHwnd": "0x1800e6",
"targetProcessId": 6008,
"workerThreadId": 7552,
"workerApartment": "MTA",
"watchedProperties": "Name=30005,ValuePattern.Value=30045,TogglePattern.ToggleState=30086,HasKeyboardFocus=30008,RangeValuePattern.Value=30047",
"totalEvents": 557,
"distinctEventThreadCount": 4,
"eventThreadsDistinctFromMain": true,
"eventThreadsDistinctFromWorker": false,
"kindTotals": {
"AutomationEvent:Window_WindowClosed": 10,
"AutomationEvent:Window_WindowOpened": 7,
"FocusChanged": 42,
"PropertyChanged:Name": 180,
"PropertyChanged:ValuePattern.Value": 318
},
"orderingStableAcrossReps": false,
"distinctOrderingSignatures": 6,
"orderingStableExcludingWindowEvents": true,
"distinctCoreOrderingSignatures": 1,
"orderingPerRep": [
{
"rep": 0,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 1,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 2,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 3,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed\u003eAutomationEvent:Window_WindowOpened"
},
{
"rep": 4,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed"
},
{
"rep": 5,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eAutomationEvent:Window_WindowOpened\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowClosed"
},
{
"rep": 6,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 7,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged\u003eAutomationEvent:Window_WindowOpened\u003eAutomationEvent:Window_WindowClosed"
},
{
"rep": 8,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 9,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 10,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 11,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 12,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 13,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 14,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 15,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 16,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 17,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 18,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eFocusChanged"
},
{
"rep": 19,
"sequence": "PropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:Name\u003ePropertyChanged:Name\u003ePropertyChanged:ValuePattern.Value\u003ePropertyChanged:ValuePattern.Value\u003eFocusChanged\u003eAutomationEvent:Window_WindowOpened\u003eAutomationEvent:Window_WindowClosed\u003eFocusChanged"
}
],
"quiescentTeardownCompleted": true,
"quiescentTeardownElapsedMs": 86184.2359,
"inflightTeardownCompletedUnderLoad": true,
"inflightTeardownCompletedOnlyAfterLoadStopped": false,
"inflightTeardownElapsedMs": 72.4894,
"quiescentTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": <duration>
},
{
"handler": "Text_TextChanged",
"elapsedMs": <duration>
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowOpened",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowClosed",
"elapsedMs": <duration>
},
{
"handler": "PropertyChanged",
"elapsedMs": <duration>
},
{
"handler": "FocusChanged",
"elapsedMs": <duration>
}
],
"inflightTeardownPerHandler": [
{
"handler": "Invoke_Invoked",
"elapsedMs": <duration>
},
{
"handler": "Text_TextChanged",
"elapsedMs": <duration>
},
{
"handler": "SelectionItem_ElementSelected",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowOpened",
"elapsedMs": <duration>
},
{
"handler": "Window_WindowClosed",
"elapsedMs": <duration>
},
{
"handler": "PropertyChanged",
"elapsedMs": <duration>
},
{
"handler": "FocusChanged",
"elapsedMs": <duration>
}
],
"inflightEventBacklogAtTeardown": 296,
"eventsDuringTeardownWindow": 300,
"workerErrors": "",
"sample": [
{
"seq": 0,
"rep": 0,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "ImmersiveBackground",
"senderControlType": "Button",
"senderIsTarget": false
},
{
"seq": 1,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 2,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 3,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 4,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 5,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 6,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 7,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 8,
"rep": 0,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 9,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 10,
"rep": 0,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 11,
"rep": 0,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 12,
"rep": 0,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 13,
"rep": 0,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 14,
"rep": 0,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 15,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 16,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 17,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 18,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 19,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 20,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 21,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 22,
"rep": 1,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 23,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 24,
"rep": 1,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 25,
"rep": 1,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 26,
"rep": 1,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 27,
"rep": 1,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 28,
"rep": 1,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 29,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 30,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 31,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 32,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 33,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 34,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 35,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 36,
"rep": 2,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 37,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 38,
"rep": 2,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 39,
"rep": 2,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 40,
"rep": 2,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 41,
"rep": 2,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 42,
"rep": 2,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 43,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 44,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 45,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 46,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
},
{
"seq": 47,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 48,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 49,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 50,
"rep": 3,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "chkToggle",
"senderControlType": "CheckBox",
"senderIsTarget": true,
"newValue": "Enable feature"
},
{
"seq": 51,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 52,
"rep": 3,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtStatusMirror",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 53,
"rep": 3,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 54,
"rep": 3,
"label": "FocusChanged",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true
},
{
"seq": 55,
"rep": 3,
"label": "AutomationEvent:Window_WindowClosed",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 56,
"rep": 3,
"label": "AutomationEvent:Window_WindowOpened",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "frmScratchMain",
"senderControlType": "Window",
"senderIsTarget": true
},
{
"seq": 57,
"rep": 4,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 58,
"rep": 4,
"label": "PropertyChanged:ValuePattern.Value",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "txtValue",
"senderControlType": "Edit",
"senderIsTarget": true
},
{
"seq": 59,
"rep": 4,
"label": "PropertyChanged:Name",
"threadId": <tid>,
"elapsedMs": <duration>,
"senderAutomationId": "btnAction",
"senderControlType": "Button",
"senderIsTarget": true,
"newValue": "Do Action"
}
]
}
}

View file

@ -0,0 +1,893 @@
{
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 4424,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"mode": "ids",
"propertyCount": 175,
"properties": [
{
"id": 30000,
"programmaticName": "RuntimeId"
},
{
"id": 30001,
"programmaticName": "BoundingRectangle"
},
{
"id": 30002,
"programmaticName": "ProcessId"
},
{
"id": 30003,
"programmaticName": "ControlType"
},
{
"id": 30004,
"programmaticName": "LocalizedControlType"
},
{
"id": 30005,
"programmaticName": "Name"
},
{
"id": 30006,
"programmaticName": "AcceleratorKey"
},
{
"id": 30007,
"programmaticName": "AccessKey"
},
{
"id": 30008,
"programmaticName": "HasKeyboardFocus"
},
{
"id": 30009,
"programmaticName": "IsKeyboardFocusable"
},
{
"id": 30010,
"programmaticName": "IsEnabled"
},
{
"id": 30011,
"programmaticName": "AutomationId"
},
{
"id": 30012,
"programmaticName": "ClassName"
},
{
"id": 30013,
"programmaticName": "HelpText"
},
{
"id": 30014,
"programmaticName": "ClickablePoint"
},
{
"id": 30015,
"programmaticName": "Culture"
},
{
"id": 30016,
"programmaticName": "IsControlElement"
},
{
"id": 30017,
"programmaticName": "IsContentElement"
},
{
"id": 30018,
"programmaticName": "LabeledBy"
},
{
"id": 30019,
"programmaticName": "IsPassword"
},
{
"id": 30020,
"programmaticName": "NativeWindowHandle"
},
{
"id": 30021,
"programmaticName": "ItemType"
},
{
"id": 30022,
"programmaticName": "IsOffscreen"
},
{
"id": 30023,
"programmaticName": "Orientation"
},
{
"id": 30024,
"programmaticName": "FrameworkId"
},
{
"id": 30025,
"programmaticName": "IsRequiredForForm"
},
{
"id": 30026,
"programmaticName": "ItemStatus"
},
{
"id": 30027,
"programmaticName": "IsDockPatternAvailable"
},
{
"id": 30028,
"programmaticName": "IsExpandCollapsePatternAvailable"
},
{
"id": 30029,
"programmaticName": "IsGridItemPatternAvailable"
},
{
"id": 30030,
"programmaticName": "IsGridPatternAvailable"
},
{
"id": 30031,
"programmaticName": "IsInvokePatternAvailable"
},
{
"id": 30032,
"programmaticName": "IsMultipleViewPatternAvailable"
},
{
"id": 30033,
"programmaticName": "IsRangeValuePatternAvailable"
},
{
"id": 30034,
"programmaticName": "IsScrollPatternAvailable"
},
{
"id": 30035,
"programmaticName": "IsScrollItemPatternAvailable"
},
{
"id": 30036,
"programmaticName": "IsSelectionItemPatternAvailable"
},
{
"id": 30037,
"programmaticName": "IsSelectionPatternAvailable"
},
{
"id": 30038,
"programmaticName": "IsTablePatternAvailable"
},
{
"id": 30039,
"programmaticName": "IsTableItemPatternAvailable"
},
{
"id": 30040,
"programmaticName": "IsTextPatternAvailable"
},
{
"id": 30041,
"programmaticName": "IsTogglePatternAvailable"
},
{
"id": 30042,
"programmaticName": "IsTransformPatternAvailable"
},
{
"id": 30043,
"programmaticName": "IsValuePatternAvailable"
},
{
"id": 30044,
"programmaticName": "IsWindowPatternAvailable"
},
{
"id": 30045,
"programmaticName": "ValuePattern.Value"
},
{
"id": 30046,
"programmaticName": "ValuePattern.IsReadOnly"
},
{
"id": 30047,
"programmaticName": "RangeValuePattern.Value"
},
{
"id": 30048,
"programmaticName": "RangeValuePattern.IsReadOnly"
},
{
"id": 30049,
"programmaticName": "RangeValuePattern.Minimum"
},
{
"id": 30050,
"programmaticName": "RangeValuePattern.Maximum"
},
{
"id": 30051,
"programmaticName": "RangeValuePattern.LargeChange"
},
{
"id": 30052,
"programmaticName": "RangeValuePattern.SmallChange"
},
{
"id": 30053,
"programmaticName": "ScrollPattern.HorizontalScrollPercent"
},
{
"id": 30054,
"programmaticName": "ScrollPattern.HorizontalViewSize"
},
{
"id": 30055,
"programmaticName": "ScrollPattern.VerticalScrollPercent"
},
{
"id": 30056,
"programmaticName": "ScrollPattern.VerticalViewSize"
},
{
"id": 30057,
"programmaticName": "ScrollPattern.HorizontallyScrollable"
},
{
"id": 30058,
"programmaticName": "ScrollPattern.VerticallyScrollable"
},
{
"id": 30059,
"programmaticName": "SelectionPattern.Selection"
},
{
"id": 30060,
"programmaticName": "SelectionPattern.CanSelectMultiple"
},
{
"id": 30061,
"programmaticName": "SelectionPattern.IsSelectionRequired"
},
{
"id": 30062,
"programmaticName": "GridPattern.RowCount"
},
{
"id": 30063,
"programmaticName": "GridPattern.ColumnCount"
},
{
"id": 30064,
"programmaticName": "GridItemPattern.Row"
},
{
"id": 30065,
"programmaticName": "GridItemPattern.Column"
},
{
"id": 30066,
"programmaticName": "GridItemPattern.RowSpan"
},
{
"id": 30067,
"programmaticName": "GridItemPattern.ColumnSpan"
},
{
"id": 30068,
"programmaticName": "GridItemPattern.Parent"
},
{
"id": 30069,
"programmaticName": "DockPattern.DockPosition"
},
{
"id": 30070,
"programmaticName": "ExpandCollapsePattern.ExpandCollapseState"
},
{
"id": 30071,
"programmaticName": "MultipleViewPattern.CurrentView"
},
{
"id": 30072,
"programmaticName": "MultipleViewPattern.SupportedViews"
},
{
"id": 30073,
"programmaticName": "WindowPattern.CanMaximize"
},
{
"id": 30074,
"programmaticName": "WindowPattern.CanMinimize"
},
{
"id": 30075,
"programmaticName": "WindowPattern.WindowVisualState"
},
{
"id": 30076,
"programmaticName": "WindowPattern.WindowInteractionState"
},
{
"id": 30077,
"programmaticName": "WindowPattern.IsModal"
},
{
"id": 30078,
"programmaticName": "WindowPattern.IsTopmost"
},
{
"id": 30079,
"programmaticName": "SelectionItemPattern.IsSelected"
},
{
"id": 30080,
"programmaticName": "SelectionItemPattern.SelectionContainer"
},
{
"id": 30081,
"programmaticName": "TablePattern.RowHeaders"
},
{
"id": 30082,
"programmaticName": "TablePattern.ColumnHeaders"
},
{
"id": 30083,
"programmaticName": "TablePattern.RowOrColumnMajor"
},
{
"id": 30084,
"programmaticName": "TableItemPattern.RowHeaderItems"
},
{
"id": 30085,
"programmaticName": "TableItemPattern.ColumnHeaderItems"
},
{
"id": 30086,
"programmaticName": "TogglePattern.ToggleState"
},
{
"id": 30087,
"programmaticName": "TransformPattern.CanMove"
},
{
"id": 30088,
"programmaticName": "TransformPattern.CanResize"
},
{
"id": 30089,
"programmaticName": "TransformPattern.CanRotate"
},
{
"id": 30090,
"programmaticName": "IsLegacyIAccessiblePatternAvailable"
},
{
"id": 30091,
"programmaticName": "LegacyIAccessiblePattern.ChildId"
},
{
"id": 30092,
"programmaticName": "LegacyIAccessiblePattern.Name"
},
{
"id": 30093,
"programmaticName": "LegacyIAccessiblePattern.Value"
},
{
"id": 30094,
"programmaticName": "LegacyIAccessiblePattern.Description"
},
{
"id": 30095,
"programmaticName": "LegacyIAccessiblePattern.Role"
},
{
"id": 30096,
"programmaticName": "LegacyIAccessiblePattern.State"
},
{
"id": 30097,
"programmaticName": "LegacyIAccessiblePattern.Help"
},
{
"id": 30098,
"programmaticName": "LegacyIAccessiblePattern.KeyboardShortcut"
},
{
"id": 30099,
"programmaticName": "LegacyIAccessiblePattern.Selection"
},
{
"id": 30100,
"programmaticName": "LegacyIAccessiblePattern.DefaultAction"
},
{
"id": 30101,
"programmaticName": "AriaRole"
},
{
"id": 30102,
"programmaticName": "AriaProperties"
},
{
"id": 30103,
"programmaticName": "IsDataValidForForm"
},
{
"id": 30104,
"programmaticName": "ControllerFor"
},
{
"id": 30105,
"programmaticName": "DescribedBy"
},
{
"id": 30106,
"programmaticName": "FlowsTo"
},
{
"id": 30107,
"programmaticName": "ProviderDescription"
},
{
"id": 30108,
"programmaticName": "IsItemContainerPatternAvailable"
},
{
"id": 30109,
"programmaticName": "IsVirtualizedItemPatternAvailable"
},
{
"id": 30110,
"programmaticName": "IsSynchronizedInputPatternAvailable"
},
{
"id": 30111,
"programmaticName": "OptimizeForVisualContent"
},
{
"id": 30112,
"programmaticName": "IsObjectModelPatternAvailable"
},
{
"id": 30113,
"programmaticName": "AnnotationPattern.AnnotationTypeId"
},
{
"id": 30114,
"programmaticName": "AnnotationPattern.AnnotationTypeName"
},
{
"id": 30115,
"programmaticName": "AnnotationPattern.Author"
},
{
"id": 30116,
"programmaticName": "AnnotationPattern.DateTime"
},
{
"id": 30117,
"programmaticName": "AnnotationPattern.Target"
},
{
"id": 30118,
"programmaticName": "IsAnnotationPatternAvailable"
},
{
"id": 30119,
"programmaticName": "IsTextPattern2Available"
},
{
"id": 30120,
"programmaticName": "StylesPattern.StyleId"
},
{
"id": 30121,
"programmaticName": "StylesPattern.StyleName"
},
{
"id": 30122,
"programmaticName": "StylesPattern.FillColor"
},
{
"id": 30123,
"programmaticName": "StylesPattern.FillPatternStyle"
},
{
"id": 30124,
"programmaticName": "StylesPattern.Shape"
},
{
"id": 30125,
"programmaticName": "StylesPattern.FillPatternColor"
},
{
"id": 30126,
"programmaticName": "StylesPattern.ExtendedProperties"
},
{
"id": 30127,
"programmaticName": "IsStylesPatternAvailable"
},
{
"id": 30128,
"programmaticName": "IsSpreadsheetPatternAvailable"
},
{
"id": 30129,
"programmaticName": "SpreadsheetItemPattern.Formula"
},
{
"id": 30130,
"programmaticName": "SpreadsheetItemPattern.AnnotationObjects"
},
{
"id": 30131,
"programmaticName": "SpreadsheetItemPattern.AnnotationTypes"
},
{
"id": 30132,
"programmaticName": "IsSpreadsheetItemPatternAvailable"
},
{
"id": 30133,
"programmaticName": "TransformPattern2.CanZoom"
},
{
"id": 30134,
"programmaticName": "IsTransformPattern2Available"
},
{
"id": 30135,
"programmaticName": "LiveSetting"
},
{
"id": 30136,
"programmaticName": "IsTextChildPatternAvailable"
},
{
"id": 30137,
"programmaticName": "IsDragPatternAvailable"
},
{
"id": 30138,
"programmaticName": "Drag.IsGrabbed"
},
{
"id": 30139,
"programmaticName": "Drag.DropEffect"
},
{
"id": 30140,
"programmaticName": "Drag.DropEffects"
},
{
"id": 30141,
"programmaticName": "IsDropTargetPatternAvailable"
},
{
"id": 30142,
"programmaticName": "DropTarget.DropTargetEffect"
},
{
"id": 30143,
"programmaticName": "DropTarget.DropTargetEffects"
},
{
"id": 30144,
"programmaticName": "Drag.GrabbedItems"
},
{
"id": 30145,
"programmaticName": "TransformPattern2.ZoomLevel"
},
{
"id": 30146,
"programmaticName": "TransformPattern2.ZoomMinimum"
},
{
"id": 30147,
"programmaticName": "TransformPattern2.ZoomMaximum"
},
{
"id": 30148,
"programmaticName": "FlowsFrom"
},
{
"id": 30149,
"programmaticName": "IsTextEditPatternAvailable"
},
{
"id": 30150,
"programmaticName": "IsPeripheral"
},
{
"id": 30151,
"programmaticName": "IsCustomNavigationPatternAvailable"
},
{
"id": 30152,
"programmaticName": "PositionInSet"
},
{
"id": 30153,
"programmaticName": "SizeOfSet"
},
{
"id": 30154,
"programmaticName": "Level"
},
{
"id": 30155,
"programmaticName": "AnnotationTypes"
},
{
"id": 30156,
"programmaticName": "AnnotationObjects"
},
{
"id": 30157,
"programmaticName": "LandmarkType"
},
{
"id": 30158,
"programmaticName": "LocalizedLandmarkType"
},
{
"id": 30159,
"programmaticName": "FullDescription"
},
{
"id": 30160,
"programmaticName": "FillColor"
},
{
"id": 30161,
"programmaticName": "OutlineColor"
},
{
"id": 30162,
"programmaticName": "FillType"
},
{
"id": 30163,
"programmaticName": "VisualEffects"
},
{
"id": 30164,
"programmaticName": "OutlineThickness"
},
{
"id": 30165,
"programmaticName": "CenterPoint"
},
{
"id": 30166,
"programmaticName": "Rotation"
},
{
"id": 30167,
"programmaticName": "Size"
},
{
"id": 30168,
"programmaticName": "IsSelectionPattern2Available"
},
{
"id": 30169,
"programmaticName": "Selection2.FirstSelectedItem"
},
{
"id": 30170,
"programmaticName": "Selection2.LastSelectedItem"
},
{
"id": 30171,
"programmaticName": "Selection2.CurrentSelectedItem"
},
{
"id": 30172,
"programmaticName": "Selection2.ItemCount"
},
{
"id": 30173,
"programmaticName": "HeadingLevel"
},
{
"id": 30174,
"programmaticName": "IsDialog"
}
],
"patterns": [
"10000=InvokePattern",
"10001=SelectionPattern",
"10002=ValuePattern",
"10003=RangeValuePattern",
"10004=ScrollPattern",
"10005=ExpandCollapsePattern",
"10006=GridPattern",
"10007=GridItemPattern",
"10008=MultipleViewPattern",
"10009=WindowPattern",
"10010=SelectionItemPattern",
"10011=DockPattern",
"10012=TablePattern",
"10013=TableItemPattern",
"10014=TextPattern",
"10015=TogglePattern",
"10016=TransformPattern",
"10017=ScrollItemPattern",
"10018=LegacyIAccessiblePattern",
"10019=ItemContainerPattern",
"10020=VirtualizedItemPattern",
"10021=SynchronizedInputPattern",
"10022=ObjectModelPattern",
"10023=AnnotationPattern",
"10024=TextPattern2",
"10025=StylesPattern",
"10026=SpreadsheetPattern",
"10027=SpreadsheetItemPattern",
"10028=TransformPattern2",
"10029=TextChildPattern",
"10030=DragPattern",
"10031=DropTargetPattern",
"10032=TextEditPattern",
"10033=CustomNavigationPattern",
"10034=SelectionPattern2"
],
"patternAvailabilityProperties": [
{
"pattern": "Annotation",
"availabilityPropertyId": 30118
},
{
"pattern": "CustomNavigation",
"availabilityPropertyId": 30151
},
{
"pattern": "Dock",
"availabilityPropertyId": 30027
},
{
"pattern": "Drag",
"availabilityPropertyId": 30137
},
{
"pattern": "DropTarget",
"availabilityPropertyId": 30141
},
{
"pattern": "ExpandCollapse",
"availabilityPropertyId": 30028
},
{
"pattern": "Grid",
"availabilityPropertyId": 30030
},
{
"pattern": "GridItem",
"availabilityPropertyId": 30029
},
{
"pattern": "Invoke",
"availabilityPropertyId": 30031
},
{
"pattern": "ItemContainer",
"availabilityPropertyId": 30108
},
{
"pattern": "LegacyIAccessible",
"availabilityPropertyId": 30090
},
{
"pattern": "MultipleView",
"availabilityPropertyId": 30032
},
{
"pattern": "ObjectModel",
"availabilityPropertyId": 30112
},
{
"pattern": "RangeValue",
"availabilityPropertyId": 30033
},
{
"pattern": "Scroll",
"availabilityPropertyId": 30034
},
{
"pattern": "ScrollItem",
"availabilityPropertyId": 30035
},
{
"pattern": "Selection",
"availabilityPropertyId": 30037
},
{
"pattern": "Selection2",
"availabilityPropertyId": 30168
},
{
"pattern": "SelectionItem",
"availabilityPropertyId": 30036
},
{
"pattern": "Spreadsheet",
"availabilityPropertyId": 30128
},
{
"pattern": "SpreadsheetItem",
"availabilityPropertyId": 30132
},
{
"pattern": "Styles",
"availabilityPropertyId": 30127
},
{
"pattern": "SynchronizedInput",
"availabilityPropertyId": 30110
},
{
"pattern": "Table",
"availabilityPropertyId": 30038
},
{
"pattern": "TableItem",
"availabilityPropertyId": 30039
},
{
"pattern": "Text",
"availabilityPropertyId": 30040
},
{
"pattern": "Text2",
"availabilityPropertyId": 30119
},
{
"pattern": "TextChild",
"availabilityPropertyId": 30136
},
{
"pattern": "TextEdit",
"availabilityPropertyId": 30149
},
{
"pattern": "Toggle",
"availabilityPropertyId": 30041
},
{
"pattern": "Transform",
"availabilityPropertyId": 30042
},
{
"pattern": "Transform2",
"availabilityPropertyId": 30134
},
{
"pattern": "Value",
"availabilityPropertyId": 30043
},
{
"pattern": "VirtualizedItem",
"availabilityPropertyId": 30109
},
{
"pattern": "Window",
"availabilityPropertyId": 30044
}
]
}
}

View file

@ -0,0 +1,893 @@
{
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 4424,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"mode": "ids",
"propertyCount": 175,
"properties": [
{
"id": 30000,
"programmaticName": "RuntimeId"
},
{
"id": 30001,
"programmaticName": "BoundingRectangle"
},
{
"id": 30002,
"programmaticName": "ProcessId"
},
{
"id": 30003,
"programmaticName": "ControlType"
},
{
"id": 30004,
"programmaticName": "LocalizedControlType"
},
{
"id": 30005,
"programmaticName": "Name"
},
{
"id": 30006,
"programmaticName": "AcceleratorKey"
},
{
"id": 30007,
"programmaticName": "AccessKey"
},
{
"id": 30008,
"programmaticName": "HasKeyboardFocus"
},
{
"id": 30009,
"programmaticName": "IsKeyboardFocusable"
},
{
"id": 30010,
"programmaticName": "IsEnabled"
},
{
"id": 30011,
"programmaticName": "AutomationId"
},
{
"id": 30012,
"programmaticName": "ClassName"
},
{
"id": 30013,
"programmaticName": "HelpText"
},
{
"id": 30014,
"programmaticName": "ClickablePoint"
},
{
"id": 30015,
"programmaticName": "Culture"
},
{
"id": 30016,
"programmaticName": "IsControlElement"
},
{
"id": 30017,
"programmaticName": "IsContentElement"
},
{
"id": 30018,
"programmaticName": "LabeledBy"
},
{
"id": 30019,
"programmaticName": "IsPassword"
},
{
"id": 30020,
"programmaticName": "NativeWindowHandle"
},
{
"id": 30021,
"programmaticName": "ItemType"
},
{
"id": 30022,
"programmaticName": "IsOffscreen"
},
{
"id": 30023,
"programmaticName": "Orientation"
},
{
"id": 30024,
"programmaticName": "FrameworkId"
},
{
"id": 30025,
"programmaticName": "IsRequiredForForm"
},
{
"id": 30026,
"programmaticName": "ItemStatus"
},
{
"id": 30027,
"programmaticName": "IsDockPatternAvailable"
},
{
"id": 30028,
"programmaticName": "IsExpandCollapsePatternAvailable"
},
{
"id": 30029,
"programmaticName": "IsGridItemPatternAvailable"
},
{
"id": 30030,
"programmaticName": "IsGridPatternAvailable"
},
{
"id": 30031,
"programmaticName": "IsInvokePatternAvailable"
},
{
"id": 30032,
"programmaticName": "IsMultipleViewPatternAvailable"
},
{
"id": 30033,
"programmaticName": "IsRangeValuePatternAvailable"
},
{
"id": 30034,
"programmaticName": "IsScrollPatternAvailable"
},
{
"id": 30035,
"programmaticName": "IsScrollItemPatternAvailable"
},
{
"id": 30036,
"programmaticName": "IsSelectionItemPatternAvailable"
},
{
"id": 30037,
"programmaticName": "IsSelectionPatternAvailable"
},
{
"id": 30038,
"programmaticName": "IsTablePatternAvailable"
},
{
"id": 30039,
"programmaticName": "IsTableItemPatternAvailable"
},
{
"id": 30040,
"programmaticName": "IsTextPatternAvailable"
},
{
"id": 30041,
"programmaticName": "IsTogglePatternAvailable"
},
{
"id": 30042,
"programmaticName": "IsTransformPatternAvailable"
},
{
"id": 30043,
"programmaticName": "IsValuePatternAvailable"
},
{
"id": 30044,
"programmaticName": "IsWindowPatternAvailable"
},
{
"id": 30045,
"programmaticName": "ValuePattern.Value"
},
{
"id": 30046,
"programmaticName": "ValuePattern.IsReadOnly"
},
{
"id": 30047,
"programmaticName": "RangeValuePattern.Value"
},
{
"id": 30048,
"programmaticName": "RangeValuePattern.IsReadOnly"
},
{
"id": 30049,
"programmaticName": "RangeValuePattern.Minimum"
},
{
"id": 30050,
"programmaticName": "RangeValuePattern.Maximum"
},
{
"id": 30051,
"programmaticName": "RangeValuePattern.LargeChange"
},
{
"id": 30052,
"programmaticName": "RangeValuePattern.SmallChange"
},
{
"id": 30053,
"programmaticName": "ScrollPattern.HorizontalScrollPercent"
},
{
"id": 30054,
"programmaticName": "ScrollPattern.HorizontalViewSize"
},
{
"id": 30055,
"programmaticName": "ScrollPattern.VerticalScrollPercent"
},
{
"id": 30056,
"programmaticName": "ScrollPattern.VerticalViewSize"
},
{
"id": 30057,
"programmaticName": "ScrollPattern.HorizontallyScrollable"
},
{
"id": 30058,
"programmaticName": "ScrollPattern.VerticallyScrollable"
},
{
"id": 30059,
"programmaticName": "SelectionPattern.Selection"
},
{
"id": 30060,
"programmaticName": "SelectionPattern.CanSelectMultiple"
},
{
"id": 30061,
"programmaticName": "SelectionPattern.IsSelectionRequired"
},
{
"id": 30062,
"programmaticName": "GridPattern.RowCount"
},
{
"id": 30063,
"programmaticName": "GridPattern.ColumnCount"
},
{
"id": 30064,
"programmaticName": "GridItemPattern.Row"
},
{
"id": 30065,
"programmaticName": "GridItemPattern.Column"
},
{
"id": 30066,
"programmaticName": "GridItemPattern.RowSpan"
},
{
"id": 30067,
"programmaticName": "GridItemPattern.ColumnSpan"
},
{
"id": 30068,
"programmaticName": "GridItemPattern.Parent"
},
{
"id": 30069,
"programmaticName": "DockPattern.DockPosition"
},
{
"id": 30070,
"programmaticName": "ExpandCollapsePattern.ExpandCollapseState"
},
{
"id": 30071,
"programmaticName": "MultipleViewPattern.CurrentView"
},
{
"id": 30072,
"programmaticName": "MultipleViewPattern.SupportedViews"
},
{
"id": 30073,
"programmaticName": "WindowPattern.CanMaximize"
},
{
"id": 30074,
"programmaticName": "WindowPattern.CanMinimize"
},
{
"id": 30075,
"programmaticName": "WindowPattern.WindowVisualState"
},
{
"id": 30076,
"programmaticName": "WindowPattern.WindowInteractionState"
},
{
"id": 30077,
"programmaticName": "WindowPattern.IsModal"
},
{
"id": 30078,
"programmaticName": "WindowPattern.IsTopmost"
},
{
"id": 30079,
"programmaticName": "SelectionItemPattern.IsSelected"
},
{
"id": 30080,
"programmaticName": "SelectionItemPattern.SelectionContainer"
},
{
"id": 30081,
"programmaticName": "TablePattern.RowHeaders"
},
{
"id": 30082,
"programmaticName": "TablePattern.ColumnHeaders"
},
{
"id": 30083,
"programmaticName": "TablePattern.RowOrColumnMajor"
},
{
"id": 30084,
"programmaticName": "TableItemPattern.RowHeaderItems"
},
{
"id": 30085,
"programmaticName": "TableItemPattern.ColumnHeaderItems"
},
{
"id": 30086,
"programmaticName": "TogglePattern.ToggleState"
},
{
"id": 30087,
"programmaticName": "TransformPattern.CanMove"
},
{
"id": 30088,
"programmaticName": "TransformPattern.CanResize"
},
{
"id": 30089,
"programmaticName": "TransformPattern.CanRotate"
},
{
"id": 30090,
"programmaticName": "IsLegacyIAccessiblePatternAvailable"
},
{
"id": 30091,
"programmaticName": "LegacyIAccessiblePattern.ChildId"
},
{
"id": 30092,
"programmaticName": "LegacyIAccessiblePattern.Name"
},
{
"id": 30093,
"programmaticName": "LegacyIAccessiblePattern.Value"
},
{
"id": 30094,
"programmaticName": "LegacyIAccessiblePattern.Description"
},
{
"id": 30095,
"programmaticName": "LegacyIAccessiblePattern.Role"
},
{
"id": 30096,
"programmaticName": "LegacyIAccessiblePattern.State"
},
{
"id": 30097,
"programmaticName": "LegacyIAccessiblePattern.Help"
},
{
"id": 30098,
"programmaticName": "LegacyIAccessiblePattern.KeyboardShortcut"
},
{
"id": 30099,
"programmaticName": "LegacyIAccessiblePattern.Selection"
},
{
"id": 30100,
"programmaticName": "LegacyIAccessiblePattern.DefaultAction"
},
{
"id": 30101,
"programmaticName": "AriaRole"
},
{
"id": 30102,
"programmaticName": "AriaProperties"
},
{
"id": 30103,
"programmaticName": "IsDataValidForForm"
},
{
"id": 30104,
"programmaticName": "ControllerFor"
},
{
"id": 30105,
"programmaticName": "DescribedBy"
},
{
"id": 30106,
"programmaticName": "FlowsTo"
},
{
"id": 30107,
"programmaticName": "ProviderDescription"
},
{
"id": 30108,
"programmaticName": "IsItemContainerPatternAvailable"
},
{
"id": 30109,
"programmaticName": "IsVirtualizedItemPatternAvailable"
},
{
"id": 30110,
"programmaticName": "IsSynchronizedInputPatternAvailable"
},
{
"id": 30111,
"programmaticName": "OptimizeForVisualContent"
},
{
"id": 30112,
"programmaticName": "IsObjectModelPatternAvailable"
},
{
"id": 30113,
"programmaticName": "AnnotationPattern.AnnotationTypeId"
},
{
"id": 30114,
"programmaticName": "AnnotationPattern.AnnotationTypeName"
},
{
"id": 30115,
"programmaticName": "AnnotationPattern.Author"
},
{
"id": 30116,
"programmaticName": "AnnotationPattern.DateTime"
},
{
"id": 30117,
"programmaticName": "AnnotationPattern.Target"
},
{
"id": 30118,
"programmaticName": "IsAnnotationPatternAvailable"
},
{
"id": 30119,
"programmaticName": "IsTextPattern2Available"
},
{
"id": 30120,
"programmaticName": "StylesPattern.StyleId"
},
{
"id": 30121,
"programmaticName": "StylesPattern.StyleName"
},
{
"id": 30122,
"programmaticName": "StylesPattern.FillColor"
},
{
"id": 30123,
"programmaticName": "StylesPattern.FillPatternStyle"
},
{
"id": 30124,
"programmaticName": "StylesPattern.Shape"
},
{
"id": 30125,
"programmaticName": "StylesPattern.FillPatternColor"
},
{
"id": 30126,
"programmaticName": "StylesPattern.ExtendedProperties"
},
{
"id": 30127,
"programmaticName": "IsStylesPatternAvailable"
},
{
"id": 30128,
"programmaticName": "IsSpreadsheetPatternAvailable"
},
{
"id": 30129,
"programmaticName": "SpreadsheetItemPattern.Formula"
},
{
"id": 30130,
"programmaticName": "SpreadsheetItemPattern.AnnotationObjects"
},
{
"id": 30131,
"programmaticName": "SpreadsheetItemPattern.AnnotationTypes"
},
{
"id": 30132,
"programmaticName": "IsSpreadsheetItemPatternAvailable"
},
{
"id": 30133,
"programmaticName": "TransformPattern2.CanZoom"
},
{
"id": 30134,
"programmaticName": "IsTransformPattern2Available"
},
{
"id": 30135,
"programmaticName": "LiveSetting"
},
{
"id": 30136,
"programmaticName": "IsTextChildPatternAvailable"
},
{
"id": 30137,
"programmaticName": "IsDragPatternAvailable"
},
{
"id": 30138,
"programmaticName": "Drag.IsGrabbed"
},
{
"id": 30139,
"programmaticName": "Drag.DropEffect"
},
{
"id": 30140,
"programmaticName": "Drag.DropEffects"
},
{
"id": 30141,
"programmaticName": "IsDropTargetPatternAvailable"
},
{
"id": 30142,
"programmaticName": "DropTarget.DropTargetEffect"
},
{
"id": 30143,
"programmaticName": "DropTarget.DropTargetEffects"
},
{
"id": 30144,
"programmaticName": "Drag.GrabbedItems"
},
{
"id": 30145,
"programmaticName": "TransformPattern2.ZoomLevel"
},
{
"id": 30146,
"programmaticName": "TransformPattern2.ZoomMinimum"
},
{
"id": 30147,
"programmaticName": "TransformPattern2.ZoomMaximum"
},
{
"id": 30148,
"programmaticName": "FlowsFrom"
},
{
"id": 30149,
"programmaticName": "IsTextEditPatternAvailable"
},
{
"id": 30150,
"programmaticName": "IsPeripheral"
},
{
"id": 30151,
"programmaticName": "IsCustomNavigationPatternAvailable"
},
{
"id": 30152,
"programmaticName": "PositionInSet"
},
{
"id": 30153,
"programmaticName": "SizeOfSet"
},
{
"id": 30154,
"programmaticName": "Level"
},
{
"id": 30155,
"programmaticName": "AnnotationTypes"
},
{
"id": 30156,
"programmaticName": "AnnotationObjects"
},
{
"id": 30157,
"programmaticName": "LandmarkType"
},
{
"id": 30158,
"programmaticName": "LocalizedLandmarkType"
},
{
"id": 30159,
"programmaticName": "FullDescription"
},
{
"id": 30160,
"programmaticName": "FillColor"
},
{
"id": 30161,
"programmaticName": "OutlineColor"
},
{
"id": 30162,
"programmaticName": "FillType"
},
{
"id": 30163,
"programmaticName": "VisualEffects"
},
{
"id": 30164,
"programmaticName": "OutlineThickness"
},
{
"id": 30165,
"programmaticName": "CenterPoint"
},
{
"id": 30166,
"programmaticName": "Rotation"
},
{
"id": 30167,
"programmaticName": "Size"
},
{
"id": 30168,
"programmaticName": "IsSelectionPattern2Available"
},
{
"id": 30169,
"programmaticName": "Selection2.FirstSelectedItem"
},
{
"id": 30170,
"programmaticName": "Selection2.LastSelectedItem"
},
{
"id": 30171,
"programmaticName": "Selection2.CurrentSelectedItem"
},
{
"id": 30172,
"programmaticName": "Selection2.ItemCount"
},
{
"id": 30173,
"programmaticName": "HeadingLevel"
},
{
"id": 30174,
"programmaticName": "IsDialog"
}
],
"patterns": [
"10000=InvokePattern",
"10001=SelectionPattern",
"10002=ValuePattern",
"10003=RangeValuePattern",
"10004=ScrollPattern",
"10005=ExpandCollapsePattern",
"10006=GridPattern",
"10007=GridItemPattern",
"10008=MultipleViewPattern",
"10009=WindowPattern",
"10010=SelectionItemPattern",
"10011=DockPattern",
"10012=TablePattern",
"10013=TableItemPattern",
"10014=TextPattern",
"10015=TogglePattern",
"10016=TransformPattern",
"10017=ScrollItemPattern",
"10018=LegacyIAccessiblePattern",
"10019=ItemContainerPattern",
"10020=VirtualizedItemPattern",
"10021=SynchronizedInputPattern",
"10022=ObjectModelPattern",
"10023=AnnotationPattern",
"10024=TextPattern2",
"10025=StylesPattern",
"10026=SpreadsheetPattern",
"10027=SpreadsheetItemPattern",
"10028=TransformPattern2",
"10029=TextChildPattern",
"10030=DragPattern",
"10031=DropTargetPattern",
"10032=TextEditPattern",
"10033=CustomNavigationPattern",
"10034=SelectionPattern2"
],
"patternAvailabilityProperties": [
{
"pattern": "Annotation",
"availabilityPropertyId": 30118
},
{
"pattern": "CustomNavigation",
"availabilityPropertyId": 30151
},
{
"pattern": "Dock",
"availabilityPropertyId": 30027
},
{
"pattern": "Drag",
"availabilityPropertyId": 30137
},
{
"pattern": "DropTarget",
"availabilityPropertyId": 30141
},
{
"pattern": "ExpandCollapse",
"availabilityPropertyId": 30028
},
{
"pattern": "Grid",
"availabilityPropertyId": 30030
},
{
"pattern": "GridItem",
"availabilityPropertyId": 30029
},
{
"pattern": "Invoke",
"availabilityPropertyId": 30031
},
{
"pattern": "ItemContainer",
"availabilityPropertyId": 30108
},
{
"pattern": "LegacyIAccessible",
"availabilityPropertyId": 30090
},
{
"pattern": "MultipleView",
"availabilityPropertyId": 30032
},
{
"pattern": "ObjectModel",
"availabilityPropertyId": 30112
},
{
"pattern": "RangeValue",
"availabilityPropertyId": 30033
},
{
"pattern": "Scroll",
"availabilityPropertyId": 30034
},
{
"pattern": "ScrollItem",
"availabilityPropertyId": 30035
},
{
"pattern": "Selection",
"availabilityPropertyId": 30037
},
{
"pattern": "Selection2",
"availabilityPropertyId": 30168
},
{
"pattern": "SelectionItem",
"availabilityPropertyId": 30036
},
{
"pattern": "Spreadsheet",
"availabilityPropertyId": 30128
},
{
"pattern": "SpreadsheetItem",
"availabilityPropertyId": 30132
},
{
"pattern": "Styles",
"availabilityPropertyId": 30127
},
{
"pattern": "SynchronizedInput",
"availabilityPropertyId": 30110
},
{
"pattern": "Table",
"availabilityPropertyId": 30038
},
{
"pattern": "TableItem",
"availabilityPropertyId": 30039
},
{
"pattern": "Text",
"availabilityPropertyId": 30040
},
{
"pattern": "Text2",
"availabilityPropertyId": 30119
},
{
"pattern": "TextChild",
"availabilityPropertyId": 30136
},
{
"pattern": "TextEdit",
"availabilityPropertyId": 30149
},
{
"pattern": "Toggle",
"availabilityPropertyId": 30041
},
{
"pattern": "Transform",
"availabilityPropertyId": 30042
},
{
"pattern": "Transform2",
"availabilityPropertyId": 30134
},
{
"pattern": "Value",
"availabilityPropertyId": 30043
},
{
"pattern": "VirtualizedItem",
"availabilityPropertyId": 30109
},
{
"pattern": "Window",
"availabilityPropertyId": 30044
}
]
}
}

View file

@ -0,0 +1,71 @@
{
"target": "obsidian",
"obsidianPreexisting": false,
"obsidianVersion": "1.12.7.0",
"shim": {
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 7856,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"settleMs": 8000,
"viewsFirstContact": [
{
"view": "RawView",
"nodeCount": 13,
"deepestDepth": 9,
"truncated": false,
"elapsedMs": 16.7195
},
{
"view": "ControlView",
"nodeCount": 9,
"deepestDepth": 7,
"truncated": false,
"elapsedMs": 12.3082
},
{
"view": "ContentView",
"nodeCount": 9,
"deepestDepth": 7,
"truncated": false,
"elapsedMs": 11.4191
}
],
"mode": "walker",
"label": "obsidian",
"hwnd": "0x1e0634",
"processId": 2056,
"processName": "Obsidian",
"frameworkId": "Win32",
"maxNodes": 20000,
"maxDepth": 60,
"viewsAfterSettle": [
{
"view": "RawView",
"nodeCount": 172,
"deepestDepth": 21,
"truncated": false,
"elapsedMs": 108.6732
},
{
"view": "ControlView",
"nodeCount": 133,
"deepestDepth": 14,
"truncated": false,
"elapsedMs": 84.0019
},
{
"view": "ContentView",
"nodeCount": 133,
"deepestDepth": 14,
"truncated": false,
"elapsedMs": 85.683
}
],
"rawMinusControl": 39
}
}
}

View file

@ -0,0 +1,71 @@
{
"target": "obsidian",
"obsidianPreexisting": false,
"obsidianVersion": "1.12.7.0",
"shim": {
"stack": "uia3-com",
"binding": "hand-declared ComImport, no GAC UIAutomationClient reference",
"coclass": "CUIAutomation8",
"mainThreadId": 7856,
"mainApartment": "MTA",
"discoveredPatternAvailabilityProperties": 35,
"result": {
"settleMs": 8000,
"viewsFirstContact": [
{
"view": "RawView",
"nodeCount": 13,
"deepestDepth": 9,
"truncated": false,
"elapsedMs": <duration>
},
{
"view": "ControlView",
"nodeCount": 9,
"deepestDepth": 7,
"truncated": false,
"elapsedMs": <duration>
},
{
"view": "ContentView",
"nodeCount": 9,
"deepestDepth": 7,
"truncated": false,
"elapsedMs": <duration>
}
],
"mode": "walker",
"label": "obsidian",
"hwnd": "<hwnd>",
"processId": <pid>,
"processName": "Obsidian",
"frameworkId": "Win32",
"maxNodes": 20000,
"maxDepth": 60,
"viewsAfterSettle": [
{
"view": "RawView",
"nodeCount": 172,
"deepestDepth": 21,
"truncated": false,
"elapsedMs": <duration>
},
{
"view": "ControlView",
"nodeCount": 133,
"deepestDepth": 14,
"truncated": false,
"elapsedMs": <duration>
},
{
"view": "ContentView",
"nodeCount": 133,
"deepestDepth": 14,
"truncated": false,
"elapsedMs": <duration>
}
],
"rawMinusControl": 39
}
}
}