PoshCode Archive  Hex Artifact Content

Artifact 664e6d0d6f59f9875a6bc834901174bd65f418e11c101513efbf557321cd2686:

  • File UIAutomation.ps1 — part of check-in [229b5b7c87] at 2018-06-10 13:20:24 on branch trunk — The new WASP module is getting closer, but this still isn’t quite it ;) (user: Joel Bennett size: 26843)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 63 73 68 61 72 70  i..# api: csharp
0020: 0d 0a 23 20 74 69 74 6c 65 3a 20 55 49 41 75 74  ..# title: UIAut
0030: 6f 6d 61 74 69 6f 6e 0d 0a 23 20 64 65 73 63 72  omation..# descr
0040: 69 70 74 69 6f 6e 3a 20 54 68 65 20 6e 65 77 20  iption: The new 
0050: 57 41 53 50 20 6d 6f 64 75 6c 65 20 69 73 20 67  WASP module is g
0060: 65 74 74 69 6e 67 20 63 6c 6f 73 65 72 2c 20 62  etting closer, b
0070: 75 74 20 74 68 69 73 20 73 74 69 6c 6c 20 69 73  ut this still is
0080: 6e e2 80 99 74 20 71 75 69 74 65 20 69 74 20 3b  n...t quite it ;
0090: 29 0d 0a 23 20 76 65 72 73 69 6f 6e 3a 20 31 2e  )..# version: 1.
00a0: 37 0d 0a 23 20 74 79 70 65 3a 20 6d 6f 64 75 6c  7..# type: modul
00b0: 65 0d 0a 23 20 61 75 74 68 6f 72 3a 20 4a 6f 65  e..# author: Joe
00c0: 6c 20 42 65 6e 6e 65 74 74 0d 0a 23 20 6c 69 63  l Bennett..# lic
00d0: 65 6e 73 65 3a 20 43 43 30 0d 0a 23 20 66 75 6e  ense: CC0..# fun
00e0: 63 74 69 6f 6e 3a 20 47 65 74 2d 43 6c 69 63 6b  ction: Get-Click
00f0: 61 62 6c 65 50 6f 69 6e 74 0d 0a 23 20 78 2d 70  ablePoint..# x-p
0100: 6f 73 68 63 6f 64 65 2d 69 64 3a 20 33 31 30 30  oshcode-id: 3100
0110: 0d 0a 23 20 78 2d 64 65 72 69 76 65 64 2d 66 72  ..# x-derived-fr
0120: 6f 6d 2d 69 64 3a 20 33 31 37 35 0d 0a 23 20 78  om-id: 3175..# x
0130: 2d 61 72 63 68 69 76 65 64 3a 20 32 30 31 35 2d  -archived: 2015-
0140: 31 31 2d 32 34 54 30 32 3a 30 39 3a 34 39 0d 0a  11-24T02:09:49..
0150: 23 20 78 2d 70 75 62 6c 69 73 68 65 64 3a 20 32  # x-published: 2
0160: 30 31 32 2d 31 32 2d 31 35 54 31 34 3a 32 31 3a  012-12-15T14:21:
0170: 30 30 0d 0a 23 0d 0a 23 0d 0a 23 23 20 55 49 20  00..#..#..## UI 
0180: 41 75 74 6f 6d 61 74 69 6f 6e 20 76 20 31 2e 37  Automation v 1.7
0190: 20 2d 2d 20 52 45 51 55 49 52 45 53 20 74 68 65   -- REQUIRES the
01a0: 20 52 65 66 6c 65 63 74 69 6f 6e 20 6d 6f 64 75   Reflection modu
01b0: 6c 65 20 28 63 75 72 72 65 6e 74 20 76 65 72 73  le (current vers
01c0: 69 6f 6e 3a 20 68 74 74 70 3a 2f 2f 70 6f 73 68  ion: http://posh
01d0: 63 6f 64 65 2e 6f 72 67 2f 32 34 38 30 20 29 0d  code.org/2480 ).
01e0: 0a 23 23 20 0d 0a 23 20 57 41 53 50 20 32 2e 30  .## ..# WASP 2.0
01f0: 20 69 73 20 67 65 74 74 69 6e 67 20 63 6c 6f 73   is getting clos
0200: 65 72 2c 20 62 75 74 20 74 68 69 73 20 69 73 20  er, but this is 
0210: 73 74 69 6c 6c 20 6a 75 73 74 20 61 20 70 72 65  still just a pre
0220: 76 69 65 77 3a 0d 0a 23 20 2d 2d 20 61 20 6c 6f  view:..# -- a lo
0230: 74 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64  t of the command
0240: 73 20 68 61 76 65 20 77 65 69 72 64 20 6e 61 6d  s have weird nam
0250: 65 73 20 73 74 69 6c 6c 20 62 65 63 61 75 73 65  es still because
0260: 20 74 68 65 79 27 72 65 20 62 65 69 6e 67 20 67   they're being g
0270: 65 6e 65 72 61 74 65 64 20 69 67 6e 6f 72 61 6e  enerated ignoran
0280: 74 6c 79 0d 0a 23 20 2d 2d 20 65 67 3a 20 49 6e  tly..# -- eg: In
0290: 76 6f 6b 65 2d 54 6f 67 67 6c 65 2e 54 6f 67 67  voke-Toggle.Togg
02a0: 6c 65 20 61 6e 64 20 20 49 6e 76 6f 6b 65 2d 49  le and  Invoke-I
02b0: 6e 76 6f 6b 65 2e 49 6e 76 6f 6b 65 0d 0a 0d 0a  nvoke.Invoke....
02c0: 23 20 76 20 31 2e 37 20 2d 20 46 69 78 65 73 20  # v 1.7 - Fixes 
02d0: 75 73 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 63  using multiple c
02e0: 68 65 63 6b 73 20 6c 69 6b 65 3a 20 53 65 6c 65  hecks like: Sele
02f0: 63 74 2d 55 49 45 6c 65 6d 65 6e 74 20 52 65 64  ct-UIElement Red
0300: 3a 20 45 64 69 74 0d 0a 0d 0a 41 64 64 2d 54 79  : Edit....Add-Ty
0310: 70 65 20 2d 41 73 73 65 6d 62 6c 79 4e 61 6d 65  pe -AssemblyName
0320: 20 22 55 49 41 75 74 6f 6d 61 74 69 6f 6e 43 6c   "UIAutomationCl
0330: 69 65 6e 74 2c 20 56 65 72 73 69 6f 6e 3d 33 2e  ient, Version=3.
0340: 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d 6e  0.0.0, Culture=n
0350: 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b 65  eutral, PublicKe
0360: 79 54 6f 6b 65 6e 3d 33 31 62 66 33 38 35 36 61  yToken=31bf3856a
0370: 64 33 36 34 65 33 35 22 0d 0a 41 64 64 2d 54 79  d364e35"..Add-Ty
0380: 70 65 20 2d 41 73 73 65 6d 62 6c 79 4e 61 6d 65  pe -AssemblyName
0390: 20 22 55 49 41 75 74 6f 6d 61 74 69 6f 6e 54 79   "UIAutomationTy
03a0: 70 65 73 2c 20 56 65 72 73 69 6f 6e 3d 33 2e 30  pes, Version=3.0
03b0: 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d 6e 65  .0.0, Culture=ne
03c0: 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b 65 79  utral, PublicKey
03d0: 54 6f 6b 65 6e 3d 33 31 62 66 33 38 35 36 61 64  Token=31bf3856ad
03e0: 33 36 34 65 33 35 22 0d 0a 0d 0a 24 53 57 41 20  364e35"....$SWA 
03f0: 3d 20 22 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77  = "System.Window
0400: 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 22 0d 0a 23  s.Automation"..#
0410: 20 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f    Add-Accelerato
0420: 72 20 49 6e 76 6f 6b 65 50 61 74 74 65 72 6e 20  r InvokePattern 
0430: 20 20 20 20 20 22 24 53 57 41 2e 49 6e 76 6f 6b       "$SWA.Invok
0440: 65 50 61 74 74 65 72 6e 22 20 20 20 20 20 20 20  ePattern"       
0450: 20 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c           -EA Sil
0460: 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 23  entlyContinue..#
0470: 20 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f    Add-Accelerato
0480: 72 20 45 78 70 61 6e 64 50 61 74 74 65 72 6e 20  r ExpandPattern 
0490: 20 20 20 20 20 22 24 53 57 41 2e 45 78 70 61 6e       "$SWA.Expan
04a0: 64 43 6f 6c 6c 61 70 73 65 50 61 74 74 65 72 6e  dCollapsePattern
04b0: 22 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c  "        -EA Sil
04c0: 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 23  entlyContinue..#
04d0: 20 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f    Add-Accelerato
04e0: 72 20 57 69 6e 64 6f 77 50 61 74 74 65 72 6e 20  r WindowPattern 
04f0: 20 20 20 20 20 22 24 53 57 41 2e 57 69 6e 64 6f       "$SWA.Windo
0500: 77 50 61 74 74 65 72 6e 22 20 20 20 20 20 20 20  wPattern"       
0510: 20 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c           -EA Sil
0520: 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 23  entlyContinue..#
0530: 20 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f    Add-Accelerato
0540: 72 20 54 72 61 6e 73 66 6f 72 6d 50 61 74 74 65  r TransformPatte
0550: 72 6e 20 20 20 22 24 53 57 41 2e 54 72 61 6e 73  rn   "$SWA.Trans
0560: 66 6f 72 6d 50 61 74 74 65 72 6e 22 20 20 20 20  formPattern"    
0570: 20 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c           -EA Sil
0580: 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 23  entlyContinue..#
0590: 20 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f    Add-Accelerato
05a0: 72 20 56 61 6c 75 65 50 61 74 74 65 72 6e 20 20  r ValuePattern  
05b0: 20 20 20 20 20 22 24 53 57 41 2e 56 61 6c 75 65       "$SWA.Value
05c0: 50 61 74 74 65 72 6e 22 20 20 20 20 20 20 20 20  Pattern"        
05d0: 20 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c           -EA Sil
05e0: 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 23  entlyContinue..#
05f0: 20 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f    Add-Accelerato
0600: 72 20 54 65 78 74 50 61 74 74 65 72 6e 20 20 20  r TextPattern   
0610: 20 20 20 20 20 22 24 53 57 41 2e 54 65 78 74 50       "$SWA.TextP
0620: 61 74 74 65 72 6e 22 20 20 20 20 20 20 20 20 20  attern"         
0630: 20 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c           -EA Sil
0640: 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 0d  entlyContinue...
0650: 0a 23 20 54 68 69 73 20 69 73 20 77 68 61 74 20  .# This is what 
0660: 72 65 71 75 69 72 65 73 20 74 68 65 20 52 65 66  requires the Ref
0670: 6c 65 63 74 69 6f 6e 20 6d 6f 64 75 6c 65 3a 0d  lection module:.
0680: 0a 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f 72  .Add-Accelerator
0690: 20 41 75 74 6f 6d 61 74 69 6f 6e 20 20 20 20 20   Automation     
06a0: 20 20 20 20 22 24 53 57 41 2e 41 75 74 6f 6d 61      "$SWA.Automa
06b0: 74 69 6f 6e 22 20 20 20 20 20 20 20 20 20 20 20  tion"           
06c0: 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c 65          -EA Sile
06d0: 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 41 64  ntlyContinue..Ad
06e0: 64 2d 41 63 63 65 6c 65 72 61 74 6f 72 20 41 75  d-Accelerator Au
06f0: 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 20  tomationElement 
0700: 20 22 24 53 57 41 2e 41 75 74 6f 6d 61 74 69 6f   "$SWA.Automatio
0710: 6e 45 6c 65 6d 65 6e 74 22 20 20 20 20 20 20 20  nElement"       
0720: 20 20 20 20 20 2d 45 41 20 53 69 6c 65 6e 74 6c       -EA Silentl
0730: 79 43 6f 6e 74 69 6e 75 65 0d 0a 41 64 64 2d 41  yContinue..Add-A
0740: 63 63 65 6c 65 72 61 74 6f 72 20 54 65 78 74 52  ccelerator TextR
0750: 61 6e 67 65 20 20 20 20 20 20 20 20 20 20 22 24  ange          "$
0760: 53 57 41 2e 54 65 78 74 2e 54 65 78 74 50 61 74  SWA.Text.TextPat
0770: 74 65 72 6e 52 61 6e 67 65 22 20 20 20 20 20 20  ternRange"      
0780: 20 20 2d 45 41 20 53 69 6c 65 6e 74 6c 79 43 6f    -EA SilentlyCo
0790: 6e 74 69 6e 75 65 0d 0a 23 23 23 23 23 20 20 43  ntinue..#####  C
07a0: 6f 6e 64 69 74 69 6f 6e 73 0d 0a 41 64 64 2d 41  onditions..Add-A
07b0: 63 63 65 6c 65 72 61 74 6f 72 20 43 6f 6e 64 69  ccelerator Condi
07c0: 74 69 6f 6e 20 20 20 20 20 20 20 20 20 20 22 24  tion          "$
07d0: 53 57 41 2e 43 6f 6e 64 69 74 69 6f 6e 22 20 20  SWA.Condition"  
07e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07f0: 20 20 2d 45 41 20 53 69 6c 65 6e 74 6c 79 43 6f    -EA SilentlyCo
0800: 6e 74 69 6e 75 65 0d 0a 41 64 64 2d 41 63 63 65  ntinue..Add-Acce
0810: 6c 65 72 61 74 6f 72 20 41 6e 64 43 6f 6e 64 69  lerator AndCondi
0820: 74 69 6f 6e 20 20 20 20 20 20 20 22 24 53 57 41  tion       "$SWA
0830: 2e 41 6e 64 43 6f 6e 64 69 74 69 6f 6e 22 20 20  .AndCondition"  
0840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d                 -
0850: 45 41 20 53 69 6c 65 6e 74 6c 79 43 6f 6e 74 69  EA SilentlyConti
0860: 6e 75 65 0d 0a 41 64 64 2d 41 63 63 65 6c 65 72  nue..Add-Acceler
0870: 61 74 6f 72 20 4f 72 43 6f 6e 64 69 74 69 6f 6e  ator OrCondition
0880: 20 20 20 20 20 20 20 20 22 24 53 57 41 2e 4f 72          "$SWA.Or
0890: 43 6f 6e 64 69 74 69 6f 6e 22 20 20 20 20 20 20  Condition"      
08a0: 20 20 20 20 20 20 20 20 20 20 20 20 2d 45 41 20              -EA 
08b0: 53 69 6c 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65  SilentlyContinue
08c0: 0d 0a 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f  ..Add-Accelerato
08d0: 72 20 4e 6f 74 43 6f 6e 64 69 74 69 6f 6e 20 20  r NotCondition  
08e0: 20 20 20 20 20 22 24 53 57 41 2e 4e 6f 74 43 6f       "$SWA.NotCo
08f0: 6e 64 69 74 69 6f 6e 22 20 20 20 20 20 20 20 20  ndition"        
0900: 20 20 20 20 20 20 20 20 20 2d 45 41 20 53 69 6c           -EA Sil
0910: 65 6e 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 41  entlyContinue..A
0920: 64 64 2d 41 63 63 65 6c 65 72 61 74 6f 72 20 50  dd-Accelerator P
0930: 72 6f 70 65 72 74 79 43 6f 6e 64 69 74 69 6f 6e  ropertyCondition
0940: 20 20 22 24 53 57 41 2e 50 72 6f 70 65 72 74 79    "$SWA.Property
0950: 43 6f 6e 64 69 74 69 6f 6e 22 20 20 20 20 20 20  Condition"      
0960: 20 20 20 20 20 20 2d 45 41 20 53 69 6c 65 6e 74        -EA Silent
0970: 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 23 23 23 23  lyContinue..####
0980: 23 20 20 49 44 65 6e 74 69 66 69 65 72 73 0d 0a  #  IDentifiers..
0990: 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f 72 20  Add-Accelerator 
09a0: 41 75 74 6f 45 6c 65 6d 65 6e 74 49 64 73 20 20  AutoElementIds  
09b0: 20 20 20 22 24 53 57 41 2e 41 75 74 6f 6d 61 74     "$SWA.Automat
09c0: 69 6f 6e 45 6c 65 6d 65 6e 74 49 64 65 6e 74 69  ionElementIdenti
09d0: 66 69 65 72 73 22 20 2d 45 41 20 53 69 6c 65 6e  fiers" -EA Silen
09e0: 74 6c 79 43 6f 6e 74 69 6e 75 65 0d 0a 41 64 64  tlyContinue..Add
09f0: 2d 41 63 63 65 6c 65 72 61 74 6f 72 20 54 72 61  -Accelerator Tra
0a00: 6e 73 66 6f 72 6d 49 64 73 20 20 20 20 20 20 20  nsformIds       
0a10: 22 24 53 57 41 2e 54 72 61 6e 73 66 6f 72 6d 50  "$SWA.TransformP
0a20: 61 74 74 65 72 6e 49 64 65 6e 74 69 66 69 65 72  atternIdentifier
0a30: 73 22 20 20 2d 45 41 20 53 69 6c 65 6e 74 6c 79  s"  -EA Silently
0a40: 43 6f 6e 74 69 6e 75 65 0d 0a 0d 0a 23 23 23 23  Continue....####
0a50: 23 20 50 61 74 74 65 72 6e 73 3a 0d 0a 24 70 61  # Patterns:..$pa
0a60: 74 74 65 72 6e 73 20 3d 20 47 65 74 2d 54 79 70  tterns = Get-Typ
0a70: 65 20 2d 41 73 73 65 6d 62 6c 79 20 55 49 41 75  e -Assembly UIAu
0a80: 74 6f 6d 61 74 69 6f 6e 43 6c 69 65 6e 74 20 2d  tomationClient -
0a90: 42 61 73 65 20 53 79 73 74 65 6d 2e 57 69 6e 64  Base System.Wind
0aa0: 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 42  ows.Automation.B
0ab0: 61 73 65 50 61 74 74 65 72 6e 20 0d 0a 20 20 20  asePattern ..   
0ac0: 20 20 20 20 20 20 20 20 20 23 7c 20 57 68 65 72           #| Wher
0ad0: 65 20 7b 20 24 5f 20 2d 6e 65 20 5b 53 79 73 74  e { $_ -ne [Syst
0ae0: 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d  em.Windows.Autom
0af0: 61 74 69 6f 6e 2e 49 6e 76 6f 6b 65 50 61 74 74  ation.InvokePatt
0b00: 65 72 6e 5d 20 7d 0d 0a 0d 0a 41 64 64 2d 54 79  ern] }....Add-Ty
0b10: 70 65 20 2d 54 79 70 65 44 65 66 69 6e 69 74 69  pe -TypeDefiniti
0b20: 6f 6e 20 40 22 0d 0a 75 73 69 6e 67 20 53 79 73  on @"..using Sys
0b30: 74 65 6d 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74  tem;..using Syst
0b40: 65 6d 2e 43 6f 6d 70 6f 6e 65 6e 74 4d 6f 64 65  em.ComponentMode
0b50: 6c 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d  l;..using System
0b60: 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e 41 75 74 6f  .Management.Auto
0b70: 6d 61 74 69 6f 6e 3b 0d 0a 75 73 69 6e 67 20 53  mation;..using S
0b80: 79 73 74 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e  ystem.Reflection
0b90: 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  ;..using System.
0ba0: 54 65 78 74 2e 52 65 67 75 6c 61 72 45 78 70 72  Text.RegularExpr
0bb0: 65 73 73 69 6f 6e 73 3b 0d 0a 75 73 69 6e 67 20  essions;..using 
0bc0: 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41  System.Windows.A
0bd0: 75 74 6f 6d 61 74 69 6f 6e 3b 0d 0a 75 73 69 6e  utomation;..usin
0be0: 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65  g System.Runtime
0bf0: 2e 49 6e 74 65 72 6f 70 53 65 72 76 69 63 65 73  .InteropServices
0c00: 3b 0d 0a 0d 0a 0d 0a 5b 41 74 74 72 69 62 75 74  ;......[Attribut
0c10: 65 55 73 61 67 65 28 41 74 74 72 69 62 75 74 65  eUsage(Attribute
0c20: 54 61 72 67 65 74 73 2e 46 69 65 6c 64 20 7c 20  Targets.Field | 
0c30: 41 74 74 72 69 62 75 74 65 54 61 72 67 65 74 73  AttributeTargets
0c40: 2e 50 72 6f 70 65 72 74 79 29 5d 0d 0a 70 75 62  .Property)]..pub
0c50: 6c 69 63 20 63 6c 61 73 73 20 53 74 61 74 69 63  lic class Static
0c60: 46 69 65 6c 64 41 74 74 72 69 62 75 74 65 20 3a  FieldAttribute :
0c70: 20 41 72 67 75 6d 65 6e 74 54 72 61 6e 73 66 6f   ArgumentTransfo
0c80: 72 6d 61 74 69 6f 6e 41 74 74 72 69 62 75 74 65  rmationAttribute
0c90: 20 7b 0d 0a 20 20 20 70 72 69 76 61 74 65 20 54   {..   private T
0ca0: 79 70 65 20 5f 63 6c 61 73 73 3b 0d 0a 0d 0a 20  ype _class;.... 
0cb0: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
0cc0: 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
0cd0: 67 28 29 20 7b 0d 0a 20 20 20 20 20 20 72 65 74  g() {..      ret
0ce0: 75 72 6e 20 73 74 72 69 6e 67 2e 46 6f 72 6d 61  urn string.Forma
0cf0: 74 28 22 5b 53 74 61 74 69 63 46 69 65 6c 64 28  t("[StaticField(
0d00: 4f 66 43 6c 61 73 73 3d 27 7b 30 7d 27 29 5d 22  OfClass='{0}')]"
0d10: 2c 20 4f 66 43 6c 61 73 73 2e 46 75 6c 6c 4e 61  , OfClass.FullNa
0d20: 6d 65 29 3b 0d 0a 20 20 20 7d 0d 0a 0d 0a 20 20  me);..   }....  
0d30: 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
0d40: 20 4f 62 6a 65 63 74 20 54 72 61 6e 73 66 6f 72   Object Transfor
0d50: 6d 28 20 45 6e 67 69 6e 65 49 6e 74 72 69 6e 73  m( EngineIntrins
0d60: 69 63 73 20 65 6e 67 69 6e 65 49 6e 74 72 69 6e  ics engineIntrin
0d70: 73 69 63 73 2c 20 4f 62 6a 65 63 74 20 69 6e 70  sics, Object inp
0d80: 75 74 44 61 74 61 29 20 7b 0d 0a 20 20 20 20 20  utData) {..     
0d90: 20 69 66 28 69 6e 70 75 74 44 61 74 61 20 69 73   if(inputData is
0da0: 20 73 74 72 69 6e 67 20 26 26 20 21 73 74 72 69   string && !stri
0db0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
0dc0: 28 69 6e 70 75 74 44 61 74 61 20 61 73 20 73 74  (inputData as st
0dd0: 72 69 6e 67 29 29 20 7b 0d 0a 20 20 20 20 20 20  ring)) {..      
0de0: 20 20 20 53 79 73 74 65 6d 2e 52 65 66 6c 65 63     System.Reflec
0df0: 74 69 6f 6e 2e 46 69 65 6c 64 49 6e 66 6f 20 66  tion.FieldInfo f
0e00: 69 65 6c 64 20 3d 20 5f 63 6c 61 73 73 2e 47 65  ield = _class.Ge
0e10: 74 46 69 65 6c 64 28 69 6e 70 75 74 44 61 74 61  tField(inputData
0e20: 20 61 73 20 73 74 72 69 6e 67 2c 20 42 69 6e 64   as string, Bind
0e30: 69 6e 67 46 6c 61 67 73 2e 53 74 61 74 69 63 20  ingFlags.Static 
0e40: 7c 20 42 69 6e 64 69 6e 67 46 6c 61 67 73 2e 50  | BindingFlags.P
0e50: 75 62 6c 69 63 29 3b 0d 0a 20 20 20 20 20 20 20  ublic);..       
0e60: 20 20 69 66 28 66 69 65 6c 64 20 21 3d 20 6e 75    if(field != nu
0e70: 6c 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ll) {..         
0e80: 20 20 20 72 65 74 75 72 6e 20 66 69 65 6c 64 2e     return field.
0e90: 47 65 74 56 61 6c 75 65 28 6e 75 6c 6c 29 3b 0d  GetValue(null);.
0ea0: 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  .         }..   
0eb0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65 74 75     }..      retu
0ec0: 72 6e 20 69 6e 70 75 74 44 61 74 61 3b 0d 0a 20  rn inputData;.. 
0ed0: 20 20 7d 0d 0a 20 20 20 0d 0a 20 20 20 70 75 62    }..   ..   pub
0ee0: 6c 69 63 20 53 74 61 74 69 63 46 69 65 6c 64 41  lic StaticFieldA
0ef0: 74 74 72 69 62 75 74 65 28 20 54 79 70 65 20 6f  ttribute( Type o
0f00: 66 43 6c 61 73 73 20 29 20 7b 0d 0a 20 20 20 20  fClass ) {..    
0f10: 20 20 4f 66 43 6c 61 73 73 20 3d 20 6f 66 43 6c    OfClass = ofCl
0f20: 61 73 73 3b 0d 0a 20 20 20 7d 0d 0a 0d 0a 20 20  ass;..   }....  
0f30: 20 70 75 62 6c 69 63 20 54 79 70 65 20 4f 66 43   public Type OfC
0f40: 6c 61 73 73 20 7b 0d 0a 20 20 20 20 20 20 67 65  lass {..      ge
0f50: 74 20 7b 20 72 65 74 75 72 6e 20 5f 63 6c 61 73  t { return _clas
0f60: 73 3b 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 20  s; }..      set 
0f70: 7b 20 5f 63 6c 61 73 73 20 3d 20 76 61 6c 75 65  { _class = value
0f80: 3b 20 7d 0d 0a 20 20 20 7d 20 20 20 0d 0a 7d 0d  ; }..   }   ..}.
0f90: 0a 0d 0a 70 75 62 6c 69 63 20 73 74 61 74 69 63  ...public static
0fa0: 20 63 6c 61 73 73 20 55 49 41 75 74 6f 6d 61 74   class UIAutomat
0fb0: 69 6f 6e 48 65 6c 70 65 72 20 7b 0d 0a 0d 0a 20  ionHelper {.... 
0fc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 20 28 22 75    [DllImport ("u
0fd0: 73 65 72 33 32 2e 64 6c 6c 22 2c 20 43 68 61 72  ser32.dll", Char
0fe0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75  Set = CharSet.Au
0ff0: 74 6f 29 5d 0d 0a 20 20 20 73 74 61 74 69 63 20  to)]..   static 
1000: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 46 69  extern IntPtr Fi
1010: 6e 64 57 69 6e 64 6f 77 20 28 73 74 72 69 6e 67  ndWindow (string
1020: 20 6c 70 43 6c 61 73 73 4e 61 6d 65 2c 20 73 74   lpClassName, st
1030: 72 69 6e 67 20 6c 70 57 69 6e 64 6f 77 4e 61 6d  ring lpWindowNam
1040: 65 29 3b 0d 0a 0d 0a 20 20 20 5b 44 6c 6c 49 6d  e);....   [DllIm
1050: 70 6f 72 74 20 28 22 75 73 65 72 33 32 2e 64 6c  port ("user32.dl
1060: 6c 22 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  l", CharSet = Ch
1070: 61 72 53 65 74 2e 41 75 74 6f 29 5d 0d 0a 20 20  arSet.Auto)]..  
1080: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 62   static extern b
1090: 6f 6f 6c 20 41 74 74 61 63 68 54 68 72 65 61 64  ool AttachThread
10a0: 49 6e 70 75 74 20 28 69 6e 74 20 69 64 41 74 74  Input (int idAtt
10b0: 61 63 68 2c 20 69 6e 74 20 69 64 41 74 74 61 63  ach, int idAttac
10c0: 68 54 6f 2c 20 62 6f 6f 6c 20 66 41 74 74 61 63  hTo, bool fAttac
10d0: 68 29 3b 0d 0a 0d 0a 20 20 20 5b 44 6c 6c 49 6d  h);....   [DllIm
10e0: 70 6f 72 74 20 28 22 75 73 65 72 33 32 2e 64 6c  port ("user32.dl
10f0: 6c 22 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  l", CharSet = Ch
1100: 61 72 53 65 74 2e 41 75 74 6f 29 5d 0d 0a 20 20  arSet.Auto)]..  
1110: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1120: 6e 74 20 47 65 74 57 69 6e 64 6f 77 54 68 72 65  nt GetWindowThre
1130: 61 64 50 72 6f 63 65 73 73 49 64 20 28 49 6e 74  adProcessId (Int
1140: 50 74 72 20 68 57 6e 64 2c 20 49 6e 74 50 74 72  Ptr hWnd, IntPtr
1150: 20 6c 70 64 77 50 72 6f 63 65 73 73 49 64 29 3b   lpdwProcessId);
1160: 0d 0a 0d 0a 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ....   [DllImpor
1170: 74 20 28 22 75 73 65 72 33 32 2e 64 6c 6c 22 2c  t ("user32.dll",
1180: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
1190: 65 74 2e 41 75 74 6f 29 5d 0d 0a 20 20 20 73 74  et.Auto)]..   st
11a0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
11b0: 74 72 20 53 65 74 46 6f 72 65 67 72 6f 75 6e 64  tr SetForeground
11c0: 57 69 6e 64 6f 77 20 28 49 6e 74 50 74 72 20 68  Window (IntPtr h
11d0: 57 6e 64 29 3b 0d 0a 0d 0a 20 20 20 70 75 62 6c  Wnd);....   publ
11e0: 69 63 20 73 74 61 74 69 63 20 41 75 74 6f 6d 61  ic static Automa
11f0: 74 69 6f 6e 45 6c 65 6d 65 6e 74 20 52 6f 6f 74  tionElement Root
1200: 45 6c 65 6d 65 6e 74 20 7b 0d 0a 20 20 20 20 20  Element {..     
1210: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 41 75   get { return Au
1220: 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 2e  tomationElement.
1230: 52 6f 6f 74 45 6c 65 6d 65 6e 74 3b 20 7d 0d 0a  RootElement; }..
1240: 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 2f 2f 2f     }......   ///
1250: 3c 73 79 6e 6f 70 73 69 73 3e 55 73 69 6e 67 20  <synopsis>Using 
1260: 57 69 6e 33 32 20 74 6f 20 73 65 74 20 66 6f 72  Win32 to set for
1270: 65 67 72 6f 75 6e 64 20 77 69 6e 64 6f 77 20 62  eground window b
1280: 65 63 61 75 73 65 20 41 75 74 6f 6d 61 74 69 6f  ecause Automatio
1290: 6e 45 6c 65 6d 65 6e 74 2e 53 65 74 46 6f 63 75  nElement.SetFocu
12a0: 73 28 29 20 69 73 20 75 6e 72 65 6c 69 61 62 6c  s() is unreliabl
12b0: 65 3c 2f 73 79 6e 6f 70 73 69 73 3e 0d 0a 20 20  e</synopsis>..  
12c0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
12d0: 6f 6f 6c 20 53 65 74 46 6f 72 65 67 72 6f 75 6e  ool SetForegroun
12e0: 64 28 74 68 69 73 20 41 75 74 6f 6d 61 74 69 6f  d(this Automatio
12f0: 6e 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74  nElement element
1300: 29 0d 0a 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  )..   {..      i
1310: 66 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c  f(element == nul
1320: 6c 29 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 20  l) { ..         
1330: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
1340: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
1350: 22 65 6c 65 6d 65 6e 74 22 29 3b 0d 0a 20 20 20  "element");..   
1360: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
1370: 20 47 65 74 20 68 61 6e 64 6c 65 20 74 6f 20 74   Get handle to t
1380: 68 65 20 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20  he element..    
1390: 20 20 49 6e 74 50 74 72 20 6f 74 68 65 72 20 3d    IntPtr other =
13a0: 20 46 69 6e 64 57 69 6e 64 6f 77 20 28 6e 75 6c   FindWindow (nul
13b0: 6c 2c 20 65 6c 65 6d 65 6e 74 2e 43 75 72 72 65  l, element.Curre
13c0: 6e 74 2e 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  nt.Name);....   
13d0: 20 20 20 2f 2f 20 2f 2f 20 47 65 74 20 74 68 65     // // Get the
13e0: 20 50 72 6f 63 65 73 73 20 49 44 20 66 6f 72 20   Process ID for 
13f0: 74 68 65 20 65 6c 65 6d 65 6e 74 20 77 65 20 61  the element we a
1400: 72 65 20 74 72 79 69 6e 67 20 74 6f 0d 0a 20 20  re trying to..  
1410: 20 20 20 20 2f 2f 20 2f 2f 20 73 65 74 20 61 73      // // set as
1420: 20 74 68 65 20 66 6f 72 65 67 72 6f 75 6e 64 20   the foreground 
1430: 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 20 20 2f  element..      /
1440: 2f 20 69 6e 74 20 6f 74 68 65 72 5f 69 64 20 3d  / int other_id =
1450: 20 47 65 74 57 69 6e 64 6f 77 54 68 72 65 61 64   GetWindowThread
1460: 50 72 6f 63 65 73 73 49 64 20 28 6f 74 68 65 72  ProcessId (other
1470: 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
1480: 0a 20 20 20 20 20 20 2f 2f 20 0d 0a 20 20 20 20  .      // ..    
1490: 20 20 2f 2f 20 2f 2f 20 47 65 74 20 74 68 65 20    // // Get the 
14a0: 50 72 6f 63 65 73 73 20 49 44 20 66 6f 72 20 74  Process ID for t
14b0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
14c0: 73 73 0d 0a 20 20 20 20 20 20 2f 2f 20 69 6e 74  ss..      // int
14d0: 20 74 68 69 73 5f 69 64 20 3d 20 47 65 74 57 69   this_id = GetWi
14e0: 6e 64 6f 77 54 68 72 65 61 64 50 72 6f 63 65 73  ndowThreadProces
14f0: 73 49 64 20 28 50 72 6f 63 65 73 73 2e 47 65 74  sId (Process.Get
1500: 43 75 72 72 65 6e 74 50 72 6f 63 65 73 73 28 29  CurrentProcess()
1510: 2e 48 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e  .Handle, IntPtr.
1520: 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 2f 2f  Zero);..      //
1530: 20 0d 0a 20 20 20 20 20 20 2f 2f 20 2f 2f 20 41   ..      // // A
1540: 74 74 61 63 68 20 74 68 65 20 63 75 72 72 65 6e  ttach the curren
1550: 74 20 70 72 6f 63 65 73 73 27 73 20 69 6e 70 75  t process's inpu
1560: 74 20 74 6f 20 74 68 61 74 20 6f 66 20 74 68 65  t to that of the
1570: 20 0d 0a 20 20 20 20 20 20 2f 2f 20 2f 2f 20 67   ..      // // g
1580: 69 76 65 6e 20 65 6c 65 6d 65 6e 74 2e 20 57 65  iven element. We
1590: 20 68 61 76 65 20 74 6f 20 64 6f 20 74 68 69 73   have to do this
15a0: 20 6f 74 68 65 72 77 69 73 65 20 74 68 65 0d 0a   otherwise the..
15b0: 20 20 20 20 20 20 2f 2f 20 2f 2f 20 57 4d 5f 53        // // WM_S
15c0: 45 54 46 4f 43 55 53 20 6d 65 73 73 61 67 65 20  ETFOCUS message 
15d0: 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 20  will be ignored 
15e0: 62 79 20 74 68 65 20 65 6c 65 6d 65 6e 74 2e 0d  by the element..
15f0: 0a 20 20 20 20 20 20 2f 2f 20 62 6f 6f 6c 20 73  .      // bool s
1600: 75 63 63 65 73 73 20 3d 20 41 74 74 61 63 68 54  uccess = AttachT
1610: 68 72 65 61 64 49 6e 70 75 74 28 74 68 69 73 5f  hreadInput(this_
1620: 69 64 2c 20 6f 74 68 65 72 5f 69 64 2c 20 74 72  id, other_id, tr
1630: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ue);....      //
1640: 20 4d 61 6b 65 20 74 68 65 20 57 69 6e 33 32 20   Make the Win32 
1650: 63 61 6c 6c 0d 0a 20 20 20 20 20 20 49 6e 74 50  call..      IntP
1660: 74 72 20 70 72 65 76 69 6f 75 73 20 3d 20 53 65  tr previous = Se
1670: 74 46 6f 72 65 67 72 6f 75 6e 64 57 69 6e 64 6f  tForegroundWindo
1680: 77 28 6f 74 68 65 72 29 3b 0d 0a 0d 0a 20 20 20  w(other);....   
1690: 20 20 20 72 65 74 75 72 6e 20 21 49 6e 74 50 74     return !IntPt
16a0: 72 2e 5a 65 72 6f 2e 45 71 75 61 6c 73 28 70 72  r.Zero.Equals(pr
16b0: 65 76 69 6f 75 73 29 3b 0d 0a 20 20 20 7d 0d 0a  evious);..   }..
16c0: 7d 0d 0a 22 40 20 2d 52 65 66 65 72 65 6e 63 65  }.."@ -Reference
16d0: 64 41 73 73 65 6d 62 6c 69 65 73 20 55 49 41 75  dAssemblies UIAu
16e0: 74 6f 6d 61 74 69 6f 6e 43 6c 69 65 6e 74 2c 20  tomationClient, 
16f0: 55 49 41 75 74 6f 6d 61 74 69 6f 6e 54 79 70 65  UIAutomationType
1700: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0d  s..            .
1710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20  .            .. 
1720: 20 20 20 20 20 20 20 20 20 20 20 0d 0a 23 23 20             ..## 
1730: 54 4f 44 4f 3a 20 57 72 69 74 65 20 47 65 74 2d  TODO: Write Get-
1740: 53 75 70 70 6f 72 74 65 64 50 61 74 74 65 72 6e  SupportedPattern
1750: 73 20 6f 72 20 72 61 74 68 65 72 20 2e 2e 2e 20  s or rather ... 
1760: 0d 0a 23 23 20 47 65 74 2d 53 75 70 70 6f 72 74  ..## Get-Support
1770: 65 64 46 75 6e 63 74 69 6f 6e 73 20 28 74 6f 20  edFunctions (to 
1780: 72 65 74 75 72 6e 20 74 68 65 20 6e 61 6d 65 73  return the names
1790: 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   of the function
17a0: 73 20 66 6f 72 20 74 68 65 20 73 75 70 70 6f 72  s for the suppor
17b0: 74 65 64 20 70 61 74 74 65 72 6e 73 29 0d 0a 23  ted patterns)..#
17c0: 23 20 54 4f 44 4f 3a 20 53 75 70 70 6f 72 74 20  # TODO: Support 
17d0: 61 6c 6c 20 74 68 65 20 22 50 72 6f 70 65 72 74  all the "Propert
17e0: 69 65 73 22 20 74 6f 6f 0d 0a 23 23 20 54 4f 44  ies" too..## TOD
17f0: 4f 3a 20 46 69 67 75 72 65 20 6f 75 74 20 77 68  O: Figure out wh
1800: 79 20 4e 6f 74 65 70 61 64 20 64 6f 65 73 6e 27  y Notepad doesn'
1810: 74 20 73 75 70 70 6f 72 74 20 53 65 74 56 61 6c  t support SetVal
1820: 75 65 0d 0a 23 23 20 54 4f 44 4f 3a 20 46 69 67  ue..## TODO: Fig
1830: 75 72 65 20 6f 75 74 20 77 68 65 72 65 20 74 68  ure out where th
1840: 65 20 6d 65 6e 75 73 20 73 75 70 70 6f 72 74 20  e menus support 
1850: 77 65 6e 74 0d 0a 46 6f 72 45 61 63 68 28 24 70  went..ForEach($p
1860: 61 74 74 65 72 6e 20 69 6e 20 24 70 61 74 74 65  attern in $patte
1870: 72 6e 73 29 7b 0d 0a 20 20 20 24 70 61 74 74 65  rns){..   $patte
1880: 72 6e 20 7c 20 41 64 64 2d 41 63 63 65 6c 65 72  rn | Add-Acceler
1890: 61 74 6f 72 0d 0a 20 20 20 24 50 61 74 74 65 72  ator..   $Patter
18a0: 6e 46 75 6c 6c 4e 61 6d 65 20 3d 20 24 70 61 74  nFullName = $pat
18b0: 74 65 72 6e 2e 46 75 6c 6c 4e 61 6d 65 0d 0a 20  tern.FullName.. 
18c0: 20 20 24 50 61 74 74 65 72 6e 4e 61 6d 65 20 3d    $PatternName =
18d0: 20 24 50 61 74 74 65 72 6e 2e 4e 61 6d 65 20 2d   $Pattern.Name -
18e0: 52 65 70 6c 61 63 65 20 22 50 61 74 74 65 72 6e  Replace "Pattern
18f0: 22 2c 22 2e 22 0d 0a 20 20 20 24 6e 65 77 6c 69  ","."..   $newli
1900: 6e 65 20 3d 20 22 60 6e 60 74 60 74 22 0d 0a 20  ne = "`n`t`t".. 
1910: 20 20 0d 0a 20 20 20 4e 65 77 2d 49 74 65 6d 20    ..   New-Item 
1920: 22 46 75 6e 63 74 69 6f 6e 3a 43 6f 6e 76 65 72  "Function:Conver
1930: 74 54 6f 2d 24 28 24 50 61 74 74 65 72 6e 2e 4e  tTo-$($Pattern.N
1940: 61 6d 65 29 22 20 2d 56 61 6c 75 65 20 22 0d 0a  ame)" -Value "..
1950: 20 20 20 70 61 72 61 6d 28 0d 0a 20 20 20 20 20     param(..     
1960: 20 5b 50 61 72 61 6d 65 74 65 72 28 56 61 6c 75   [Parameter(Valu
1970: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 60 24  eFromPipeline=`$
1980: 74 72 75 65 29 5d 5b 41 6c 69 61 73 28 27 45 6c  true)][Alias('El
1990: 65 6d 65 6e 74 27 2c 27 41 75 74 6f 6d 61 74 69  ement','Automati
19a0: 6f 6e 45 6c 65 6d 65 6e 74 27 29 5d 5b 41 75 74  onElement')][Aut
19b0: 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d 60  omationElement]`
19c0: 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a 20 20  $InputObject..  
19d0: 20 29 0d 0a 20 20 20 70 72 6f 63 65 73 73 20 7b   )..   process {
19e0: 20 0d 0a 20 20 20 20 20 20 74 72 61 70 20 7b 20   ..      trap { 
19f0: 0d 0a 20 20 20 20 20 20 20 20 20 69 66 28 60 24  ..         if(`$
1a00: 5f 2e 45 78 63 65 70 74 69 6f 6e 2e 4d 65 73 73  _.Exception.Mess
1a10: 61 67 65 20 2d 6c 69 6b 65 20 27 2a 55 6e 73 75  age -like '*Unsu
1a20: 70 70 6f 72 74 65 64 20 50 61 74 74 65 72 6e 2e  pported Pattern.
1a30: 2a 27 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  *') {..         
1a40: 20 20 20 57 72 69 74 65 2d 45 72 72 6f 72 20 60     Write-Error `
1a50: 22 43 61 6e 6e 6f 74 20 67 65 74 20 60 60 60 22  "Cannot get ```"
1a60: 24 28 24 50 61 74 74 65 72 6e 2e 4e 61 6d 65 29  $($Pattern.Name)
1a70: 60 60 60 22 20 66 72 6f 6d 20 74 68 61 74 20 41  ```" from that A
1a80: 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74  utomationElement
1a90: 2c 20 60 24 28 60 24 5f 29 60 20 59 6f 75 20 73  , `$(`$_)` You s
1aa0: 68 6f 75 6c 64 20 74 72 79 20 6f 6e 65 20 6f 66  hould try one of
1ab0: 3a 20 60 24 28 60 24 49 6e 70 75 74 4f 62 6a 65  : `$(`$InputObje
1ac0: 63 74 2e 47 65 74 53 75 70 70 6f 72 74 65 64 50  ct.GetSupportedP
1ad0: 61 74 74 65 72 6e 73 28 29 7c 25 7b 60 60 60 22  atterns()|%{```"
1ae0: 27 60 60 60 22 20 2b 20 28 60 24 5f 2e 50 72 6f  '```" + (`$_.Pro
1af0: 67 72 61 6d 6d 61 74 69 63 4e 61 6d 65 2e 52 65  grammaticName.Re
1b00: 70 6c 61 63 65 28 60 60 60 22 50 61 74 74 65 72  place(```"Patter
1b10: 6e 49 64 65 6e 74 69 66 69 65 72 73 2e 50 61 74  nIdentifiers.Pat
1b20: 74 65 72 6e 60 60 60 22 2c 60 60 60 22 60 60 60  tern```",```"```
1b30: 22 29 29 20 2b 20 60 60 60 22 50 61 74 74 65 72  ")) + ```"Patter
1b40: 6e 27 60 60 60 22 7d 29 60 22 3b 20 63 6f 6e 74  n'```"})`"; cont
1b50: 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1b60: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
1b70: 20 20 57 72 69 74 65 2d 4f 75 74 70 75 74 20 60    Write-Output `
1b80: 24 49 6e 70 75 74 4f 62 6a 65 63 74 2e 47 65 74  $InputObject.Get
1b90: 43 75 72 72 65 6e 74 50 61 74 74 65 72 6e 28 5b  CurrentPattern([
1ba0: 24 50 61 74 74 65 72 6e 46 75 6c 6c 4e 61 6d 65  $PatternFullName
1bb0: 5d 3a 3a 50 61 74 74 65 72 6e 29 2e 43 75 72 72  ]::Pattern).Curr
1bc0: 65 6e 74 0d 0a 20 20 20 7d 22 0d 0a 20 20 20 0d  ent..   }"..   .
1bd0: 0a 20 20 20 24 70 61 74 74 65 72 6e 2e 47 65 74  .   $pattern.Get
1be0: 4d 65 74 68 6f 64 73 28 29 20 7c 20 0d 0a 20 20  Methods() | ..  
1bf0: 20 57 68 65 72 65 20 7b 20 24 5f 2e 44 65 63 6c   Where { $_.Decl
1c00: 61 72 69 6e 67 54 79 70 65 20 2d 65 71 20 24 5f  aringType -eq $_
1c10: 2e 52 65 66 6c 65 63 74 65 64 54 79 70 65 20 2d  .ReflectedType -
1c20: 61 6e 64 20 21 24 5f 2e 49 73 53 70 65 63 69 61  and !$_.IsSpecia
1c30: 6c 4e 61 6d 65 20 7d 20 7c 20 0d 0a 20 20 20 46  lName } | ..   F
1c40: 6f 72 45 61 63 68 20 7b 0d 0a 20 20 20 20 20 20  orEach {..      
1c50: 24 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 20 3d 20  $FunctionName = 
1c60: 22 46 75 6e 63 74 69 6f 6e 3a 49 6e 76 6f 6b 65  "Function:Invoke
1c70: 2d 24 50 61 74 74 65 72 6e 4e 61 6d 65 24 28 24  -$PatternName$($
1c80: 5f 2e 4e 61 6d 65 29 22 0d 0a 20 20 20 20 20 20  _.Name)"..      
1c90: 24 50 6f 73 69 74 69 6f 6e 20 3d 20 31 0d 0a 20  $Position = 1.. 
1ca0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 69 66 20       ..      if 
1cb0: 28 74 65 73 74 2d 70 61 74 68 20 24 46 75 6e 63  (test-path $Func
1cc0: 74 69 6f 6e 4e 61 6d 65 29 20 7b 20 72 65 6d 6f  tionName) { remo
1cd0: 76 65 2d 69 74 65 6d 20 24 46 75 6e 63 74 69 6f  ve-item $Functio
1ce0: 6e 4e 61 6d 65 20 7d 0d 0a 20 20 20 20 20 20 24  nName }..      $
1cf0: 50 61 72 61 6d 65 74 65 72 73 20 3d 20 40 28 22  Parameters = @("
1d00: 24 6e 65 77 6c 69 6e 65 5b 50 61 72 61 6d 65 74  $newline[Paramet
1d10: 65 72 28 56 61 6c 75 65 46 72 6f 6d 50 69 70 65  er(ValueFromPipe
1d20: 6c 69 6e 65 3d 60 24 74 72 75 65 29 5d 22 2b 0d  line=`$true)]"+.
1d30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d40: 20 20 20 20 20 20 20 22 24 6e 65 77 6c 69 6e 65         "$newline
1d50: 5b 41 6c 69 61 73 28 27 50 61 72 65 6e 74 27 2c  [Alias('Parent',
1d60: 27 45 6c 65 6d 65 6e 74 27 2c 27 52 6f 6f 74 27  'Element','Root'
1d70: 2c 27 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d  ,'AutomationElem
1d80: 65 6e 74 27 29 5d 22 2b 0d 0a 20 20 20 20 20 20  ent')]"+..      
1d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da0: 22 24 6e 65 77 6c 69 6e 65 5b 41 75 74 6f 6d 61  "$newline[Automa
1db0: 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d 60 24 49 6e  tionElement]`$In
1dc0: 70 75 74 4f 62 6a 65 63 74 22 0d 0a 20 20 20 20  putObject"..    
1dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de0: 20 20 29 20 2b 20 0d 0a 20 20 20 20 20 20 20 20    ) + ..        
1df0: 20 20 20 20 20 20 20 20 20 20 20 20 40 28 0d 0a              @(..
1e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e10: 20 20 20 20 20 20 22 5b 50 61 72 61 6d 65 74 65        "[Paramete
1e20: 72 28 29 5d 24 6e 65 77 6c 69 6e 65 5b 53 77 69  r()]$newline[Swi
1e30: 74 63 68 5d 60 24 50 61 73 73 74 68 72 75 22 0d  tch]`$Passthru".
1e40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e50: 20 20 20 20 20 20 29 20 2b 20 0d 0a 20 20 20 20        ) + ..    
1e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e70: 40 28 24 5f 2e 47 65 74 50 61 72 61 6d 65 74 65  @($_.GetParamete
1e80: 72 73 28 29 20 7c 20 25 20 7b 20 22 5b 50 61 72  rs() | % { "[Par
1e90: 61 6d 65 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d  ameter(Position=
1ea0: 24 28 24 50 6f 73 69 74 69 6f 6e 3b 20 24 50 6f  $($Position; $Po
1eb0: 73 69 74 69 6f 6e 2b 2b 29 29 5d 24 6e 65 77 6c  sition++))]$newl
1ec0: 69 6e 65 5b 24 28 24 5f 2e 50 61 72 61 6d 65 74  ine[$($_.Paramet
1ed0: 65 72 54 79 70 65 2e 46 75 6c 6c 4e 61 6d 65 29  erType.FullName)
1ee0: 5d 60 24 24 28 24 5f 2e 4e 61 6d 65 29 22 20 7d  ]`$$($_.Name)" }
1ef0: 29 0d 0a 20 20 20 20 20 20 24 50 61 72 61 6d 65  )..      $Parame
1f00: 74 65 72 73 20 3d 20 24 50 61 72 61 6d 65 74 65  ters = $Paramete
1f10: 72 73 20 2d 4a 6f 69 6e 20 22 24 6e 65 77 6c 69  rs -Join "$newli
1f20: 6e 65 2c 24 6e 65 77 6c 69 6e 65 22 0d 0a 20 20  ne,$newline"..  
1f30: 20 20 20 20 24 50 61 72 61 6d 65 74 65 72 56 61      $ParameterVa
1f40: 6c 75 65 73 20 3d 20 27 24 27 20 2b 20 28 40 28  lues = '$' + (@(
1f50: 24 5f 2e 47 65 74 50 61 72 61 6d 65 74 65 72 73  $_.GetParameters
1f60: 28 29 20 7c 20 53 65 6c 65 63 74 2d 4f 62 6a 65  () | Select-Obje
1f70: 63 74 20 2d 45 78 70 61 6e 64 20 4e 61 6d 65 20  ct -Expand Name 
1f80: 29 20 2d 4a 6f 69 6e 20 27 2c 20 24 27 29 0d 0a  ) -Join ', $')..
1f90: 0d 0a 20 20 20 20 20 20 24 64 65 66 69 6e 69 74  ..      $definit
1fa0: 69 6f 6e 20 3d 20 40 22 0d 0a 20 20 20 70 61 72  ion = @"..   par
1fb0: 61 6d 28 0d 0a 20 20 20 20 20 20 24 50 61 72 61  am(..      $Para
1fc0: 6d 65 74 65 72 73 0d 0a 20 20 20 29 0d 0a 20 20  meters..   )..  
1fd0: 20 70 72 6f 63 65 73 73 20 7b 20 0d 0a 20 20 20   process { ..   
1fe0: 20 20 20 23 23 20 74 72 61 70 20 7b 20 57 72 69     ## trap { Wri
1ff0: 74 65 2d 57 61 72 6e 69 6e 67 20 22 60 24 28 60  te-Warning "`$(`
2000: 24 5f 29 22 3b 20 62 72 65 61 6b 20 7d 0d 0a 20  $_)"; break }.. 
2010: 20 20 20 20 20 60 24 70 61 74 74 65 72 6e 20 3d       `$pattern =
2020: 20 60 24 49 6e 70 75 74 4f 62 6a 65 63 74 2e 47   `$InputObject.G
2030: 65 74 43 75 72 72 65 6e 74 50 61 74 74 65 72 6e  etCurrentPattern
2040: 28 5b 24 50 61 74 74 65 72 6e 46 75 6c 6c 4e 61  ([$PatternFullNa
2050: 6d 65 5d 3a 3a 50 61 74 74 65 72 6e 29 0d 0a 20  me]::Pattern).. 
2060: 20 20 20 20 20 69 66 28 60 24 70 61 74 74 65 72       if(`$patter
2070: 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 60  n) {..         `
2080: 24 50 61 74 74 65 72 6e 2e 24 28 24 5f 2e 4e 61  $Pattern.$($_.Na
2090: 6d 65 29 28 24 28 69 66 28 24 50 61 72 61 6d 65  me)($(if($Parame
20a0: 74 65 72 56 61 6c 75 65 73 2e 4c 65 6e 67 74 68  terValues.Length
20b0: 20 2d 67 74 20 31 29 7b 20 24 50 61 72 61 6d 65   -gt 1){ $Parame
20c0: 74 65 72 56 61 6c 75 65 73 20 7d 29 29 0d 0a 20  terValues })).. 
20d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66       }..      if
20e0: 28 60 24 70 61 73 73 74 68 72 75 29 20 7b 0d 0a  (`$passthru) {..
20f0: 20 20 20 20 20 20 20 20 20 60 24 49 6e 70 75 74           `$Input
2100: 4f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 7d 0d  Object..      }.
2110: 0a 20 20 20 7d 0d 0a 22 40 0d 0a 20 20 20 20 20  .   }.."@..     
2120: 20 0d 0a 20 20 20 20 20 20 74 72 61 70 20 7b 0d   ..      trap {.
2130: 0a 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d  .         Write-
2140: 57 61 72 6e 69 6e 67 20 24 5f 0d 0a 20 20 20 20  Warning $_..    
2150: 20 20 20 20 20 57 72 69 74 65 2d 48 6f 73 74 20       Write-Host 
2160: 24 64 65 66 69 6e 69 74 69 6f 6e 20 2d 66 6f 72  $definition -for
2170: 65 20 63 79 61 6e 0d 0a 20 20 20 20 20 20 7d 0d  e cyan..      }.
2180: 0a 20 20 20 20 20 20 4e 65 77 2d 49 74 65 6d 20  .      New-Item 
2190: 24 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 20 2d 76  $FunctionName -v
21a0: 61 6c 75 65 20 24 64 65 66 69 6e 69 74 69 6f 6e  alue $definition
21b0: 0d 0a 20 20 20 7d 0d 0a 20 20 20 0d 0a 20 20 20  ..   }..   ..   
21c0: 24 70 61 74 74 65 72 6e 2e 47 65 74 50 72 6f 70  $pattern.GetProp
21d0: 65 72 74 69 65 73 28 29 20 7c 20 0d 0a 20 20 20  erties() | ..   
21e0: 57 68 65 72 65 20 7b 20 24 5f 2e 44 65 63 6c 61  Where { $_.Decla
21f0: 72 69 6e 67 54 79 70 65 20 2d 65 71 20 24 5f 2e  ringType -eq $_.
2200: 52 65 66 6c 65 63 74 65 64 54 79 70 65 20 2d 61  ReflectedType -a
2210: 6e 64 20 24 5f 2e 4e 61 6d 65 20 2d 6e 6f 74 6d  nd $_.Name -notm
2220: 61 74 63 68 20 22 43 61 63 68 65 64 7c 43 75 72  atch "Cached|Cur
2230: 72 65 6e 74 22 7d 20 7c 0d 0a 20 20 20 46 6f 72  rent"} |..   For
2240: 45 61 63 68 20 7b 0d 0a 20 20 20 20 20 20 24 46  Each {..      $F
2250: 75 6e 63 74 69 6f 6e 4e 61 6d 65 20 3d 20 22 46  unctionName = "F
2260: 75 6e 63 74 69 6f 6e 3a 47 65 74 2d 24 50 61 74  unction:Get-$Pat
2270: 74 65 72 6e 4e 61 6d 65 24 28 24 5f 2e 4e 61 6d  ternName$($_.Nam
2280: 65 29 22 2e 54 72 69 6d 28 27 2e 27 29 0d 0a 20  e)".Trim('.').. 
2290: 20 20 20 20 20 69 66 20 28 74 65 73 74 2d 70 61       if (test-pa
22a0: 74 68 20 24 46 75 6e 63 74 69 6f 6e 4e 61 6d 65  th $FunctionName
22b0: 29 20 7b 20 72 65 6d 6f 76 65 2d 69 74 65 6d 20  ) { remove-item 
22c0: 24 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 20 7d 0d  $FunctionName }.
22d0: 0a 20 20 20 20 20 20 4e 65 77 2d 49 74 65 6d 20  .      New-Item 
22e0: 24 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 20 2d 76  $FunctionName -v
22f0: 61 6c 75 65 20 22 0d 0a 20 20 20 20 20 20 70 61  alue "..      pa
2300: 72 61 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 5b  ram(..         [
2310: 50 61 72 61 6d 65 74 65 72 28 56 61 6c 75 65 46  Parameter(ValueF
2320: 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 60 24 74 72  romPipeline=`$tr
2330: 75 65 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 5b  ue)]..         [
2340: 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e  AutomationElemen
2350: 74 5d 60 24 41 75 74 6f 6d 61 74 69 6f 6e 45 6c  t]`$AutomationEl
2360: 65 6d 65 6e 74 0d 0a 20 20 20 20 20 20 29 20 20  ement..      )  
2370: 20 20 20 20 0d 0a 20 20 20 20 20 20 70 72 6f 63      ..      proc
2380: 65 73 73 20 7b 20 0d 0a 20 20 20 20 20 20 20 20  ess { ..        
2390: 20 74 72 61 70 20 7b 20 57 72 69 74 65 2d 57 61   trap { Write-Wa
23a0: 72 6e 69 6e 67 20 60 22 24 50 61 74 74 65 72 6e  rning `"$Pattern
23b0: 46 75 6c 6c 4e 61 6d 65 20 60 24 5f 60 22 3b 20  FullName `$_`"; 
23c0: 63 6f 6e 74 69 6e 75 65 20 7d 0d 0a 20 20 20 20  continue }..    
23d0: 20 20 20 20 20 60 24 70 61 74 74 65 72 6e 20 3d       `$pattern =
23e0: 20 60 24 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65   `$AutomationEle
23f0: 6d 65 6e 74 2e 47 65 74 43 75 72 72 65 6e 74 50  ment.GetCurrentP
2400: 61 74 74 65 72 6e 28 5b 24 50 61 74 74 65 72 6e  attern([$Pattern
2410: 46 75 6c 6c 4e 61 6d 65 5d 3a 3a 50 61 74 74 65  FullName]::Patte
2420: 72 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 69 66  rn)..         if
2430: 28 60 24 70 61 74 74 65 72 6e 29 20 7b 0d 0a 20  (`$pattern) {.. 
2440: 20 20 20 20 20 20 20 20 20 20 20 60 24 70 61 74             `$pat
2450: 74 65 72 6e 2e 27 24 28 24 5f 2e 4e 61 6d 65 29  tern.'$($_.Name)
2460: 27 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  '..         }.. 
2470: 20 20 20 20 20 7d 22 0d 0a 20 20 20 7d 0d 0a 20       }"..   }.. 
2480: 20 20 23 23 20 53 6f 20 66 61 72 20 74 68 69 73    ## So far this
2490: 20 73 65 65 6d 73 20 74 6f 20 62 65 20 72 65 73   seems to be res
24a0: 74 72 69 63 74 65 64 20 74 6f 20 54 65 78 74 20  tricted to Text 
24b0: 28 44 6f 63 75 6d 65 6e 74 52 61 6e 67 65 29 20  (DocumentRange) 
24c0: 65 6c 65 6d 65 6e 74 73 0d 0a 20 20 20 24 70 61  elements..   $pa
24d0: 74 74 65 72 6e 2e 47 65 74 46 69 65 6c 64 73 28  ttern.GetFields(
24e0: 29 20 7c 0d 0a 20 20 20 57 68 65 72 65 20 7b 20  ) |..   Where { 
24f0: 24 5f 2e 46 69 65 6c 64 54 79 70 65 2e 4e 61 6d  $_.FieldType.Nam
2500: 65 20 2d 6c 69 6b 65 20 22 2a 54 65 78 74 41 74  e -like "*TextAt
2510: 74 72 69 62 75 74 65 22 7d 20 7c 0d 0a 20 20 20  tribute"} |..   
2520: 46 6f 72 45 61 63 68 20 7b 0d 0a 20 20 20 20 20  ForEach {..     
2530: 20 24 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 20 3d   $FunctionName =
2540: 20 22 46 75 6e 63 74 69 6f 6e 3a 47 65 74 2d 54   "Function:Get-T
2550: 65 78 74 24 28 24 5f 2e 4e 61 6d 65 20 2d 72 65  ext$($_.Name -re
2560: 70 6c 61 63 65 20 27 41 74 74 72 69 62 75 74 65  place 'Attribute
2570: 27 29 22 0d 0a 20 20 20 20 20 20 69 66 20 28 74  ')"..      if (t
2580: 65 73 74 2d 70 61 74 68 20 24 46 75 6e 63 74 69  est-path $Functi
2590: 6f 6e 4e 61 6d 65 29 20 7b 20 72 65 6d 6f 76 65  onName) { remove
25a0: 2d 69 74 65 6d 20 24 46 75 6e 63 74 69 6f 6e 4e  -item $FunctionN
25b0: 61 6d 65 20 7d 0d 0a 20 20 20 20 20 20 4e 65 77  ame }..      New
25c0: 2d 49 74 65 6d 20 24 46 75 6e 63 74 69 6f 6e 4e  -Item $FunctionN
25d0: 61 6d 65 20 2d 76 61 6c 75 65 20 22 0d 0a 20 20  ame -value "..  
25e0: 20 20 20 20 70 61 72 61 6d 28 0d 0a 20 20 20 20      param(..    
25f0: 20 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28       [Parameter(
2600: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
2610: 65 3d 60 24 74 72 75 65 29 5d 0d 0a 20 20 20 20  e=`$true)]..    
2620: 20 20 20 20 20 5b 41 75 74 6f 6d 61 74 69 6f 6e       [Automation
2630: 45 6c 65 6d 65 6e 74 5d 60 24 41 75 74 6f 6d 61  Element]`$Automa
2640: 74 69 6f 6e 45 6c 65 6d 65 6e 74 0d 0a 20 20 20  tionElement..   
2650: 20 20 20 29 0d 0a 20 20 20 20 20 20 70 72 6f 63     )..      proc
2660: 65 73 73 20 7b 20 0d 0a 20 20 20 20 20 20 20 20  ess { ..        
2670: 20 74 72 61 70 20 7b 20 57 72 69 74 65 2d 57 61   trap { Write-Wa
2680: 72 6e 69 6e 67 20 60 22 24 50 61 74 74 65 72 6e  rning `"$Pattern
2690: 46 75 6c 6c 4e 61 6d 65 20 60 24 5f 60 22 3b 20  FullName `$_`"; 
26a0: 63 6f 6e 74 69 6e 75 65 20 7d 0d 0a 20 20 20 20  continue }..    
26b0: 20 20 20 20 20 60 24 41 75 74 6f 6d 61 74 69 6f       `$Automatio
26c0: 6e 45 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72  nElement.GetAttr
26d0: 69 62 75 74 65 56 61 6c 75 65 28 5b 24 50 61 74  ibuteValue([$Pat
26e0: 74 65 72 6e 46 75 6c 6c 4e 61 6d 65 5d 3a 3a 24  ternFullName]::$
26f0: 28 24 5f 2e 4e 61 6d 65 29 29 0d 0a 20 20 20 20  ($_.Name))..    
2700: 20 20 7d 22 0d 0a 20 20 20 7d 0d 0a 20 20 20 0d    }"..   }..   .
2710: 0a 20 20 20 24 70 61 74 74 65 72 6e 2e 47 65 74  .   $pattern.Get
2720: 46 69 65 6c 64 73 28 29 20 7c 20 57 68 65 72 65  Fields() | Where
2730: 20 7b 20 24 5f 2e 46 69 65 6c 64 54 79 70 65 20   { $_.FieldType 
2740: 2d 65 71 20 5b 53 79 73 74 65 6d 2e 57 69 6e 64  -eq [System.Wind
2750: 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 41  ows.Automation.A
2760: 75 74 6f 6d 61 74 69 6f 6e 45 76 65 6e 74 5d 20  utomationEvent] 
2770: 7d 20 7c 0d 0a 20 20 20 46 6f 72 45 61 63 68 20  } |..   ForEach 
2780: 7b 0d 0a 20 20 20 20 20 20 24 4e 61 6d 65 20 3d  {..      $Name =
2790: 20 24 5f 2e 4e 61 6d 65 20 2d 72 65 70 6c 61 63   $_.Name -replac
27a0: 65 20 27 45 76 65 6e 74 24 27 0d 0a 20 20 20 20  e 'Event$'..    
27b0: 20 20 24 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 20    $FunctionName 
27c0: 3d 20 22 46 75 6e 63 74 69 6f 6e 3a 52 65 67 69  = "Function:Regi
27d0: 73 74 65 72 2d 24 28 24 50 61 74 74 65 72 6e 4e  ster-$($PatternN
27e0: 61 6d 65 2e 54 72 69 6d 28 27 2e 27 29 29 24 4e  ame.Trim('.'))$N
27f0: 61 6d 65 22 0d 0a 20 20 20 20 20 20 69 66 20 28  ame"..      if (
2800: 74 65 73 74 2d 70 61 74 68 20 24 46 75 6e 63 74  test-path $Funct
2810: 69 6f 6e 4e 61 6d 65 29 20 7b 20 72 65 6d 6f 76  ionName) { remov
2820: 65 2d 69 74 65 6d 20 24 46 75 6e 63 74 69 6f 6e  e-item $Function
2830: 4e 61 6d 65 20 7d 0d 0a 20 20 20 20 20 20 4e 65  Name }..      Ne
2840: 77 2d 49 74 65 6d 20 24 46 75 6e 63 74 69 6f 6e  w-Item $Function
2850: 4e 61 6d 65 20 2d 76 61 6c 75 65 20 22 0d 0a 20  Name -value ".. 
2860: 20 20 20 20 20 70 61 72 61 6d 28 0d 0a 20 20 20       param(..   
2870: 20 20 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72        [Parameter
2880: 28 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  (ValueFromPipeli
2890: 6e 65 3d 60 24 74 72 75 65 29 5d 0d 0a 20 20 20  ne=`$true)]..   
28a0: 20 20 20 20 20 20 5b 41 75 74 6f 6d 61 74 69 6f        [Automatio
28b0: 6e 45 6c 65 6d 65 6e 74 5d 60 24 41 75 74 6f 6d  nElement]`$Autom
28c0: 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 0d 0a 20 20  ationElement..  
28d0: 20 20 20 20 2c 0d 0a 20 20 20 20 20 20 20 20 20      ,..         
28e0: 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e  [System.Windows.
28f0: 41 75 74 6f 6d 61 74 69 6f 6e 2e 54 72 65 65 53  Automation.TreeS
2900: 63 6f 70 65 5d 60 24 54 72 65 65 53 63 6f 70 65  cope]`$TreeScope
2910: 20 3d 20 27 45 6c 65 6d 65 6e 74 27 0d 0a 20 20   = 'Element'..  
2920: 20 20 20 20 2c 0d 0a 20 20 20 20 20 20 20 20 20      ,..         
2930: 5b 53 63 72 69 70 74 42 6c 6f 63 6b 5d 60 24 45  [ScriptBlock]`$E
2940: 76 65 6e 74 48 61 6e 64 6c 65 72 0d 0a 20 20 20  ventHandler..   
2950: 20 20 20 29 0d 0a 20 20 20 20 20 20 70 72 6f 63     )..      proc
2960: 65 73 73 20 7b 20 0d 0a 20 20 20 20 20 20 20 20  ess { ..        
2970: 20 74 72 61 70 20 7b 20 57 72 69 74 65 2d 57 61   trap { Write-Wa
2980: 72 6e 69 6e 67 20 60 22 24 50 61 74 74 65 72 6e  rning `"$Pattern
2990: 46 75 6c 6c 4e 61 6d 65 20 60 24 5f 60 22 3b 20  FullName `$_`"; 
29a0: 63 6f 6e 74 69 6e 75 65 20 7d 0d 0a 20 20 20 20  continue }..    
29b0: 20 20 20 20 20 5b 41 75 74 6f 6d 61 74 69 6f 6e       [Automation
29c0: 5d 3a 3a 41 64 64 41 75 74 6f 6d 61 74 69 6f 6e  ]::AddAutomation
29d0: 45 76 65 6e 74 48 61 6e 64 6c 65 72 28 20 5b 24  EventHandler( [$
29e0: 50 61 74 74 65 72 6e 46 75 6c 6c 4e 61 6d 65 5d  PatternFullName]
29f0: 3a 3a 24 4e 61 6d 65 2c 20 60 24 41 75 74 6f 6d  ::$Name, `$Autom
2a00: 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 2c 20 60 24  ationElement, `$
2a10: 54 72 65 65 53 63 6f 70 65 2c 20 60 24 45 76 65  TreeScope, `$Eve
2a20: 6e 74 48 61 6e 64 6c 65 72 20 29 0d 0a 20 20 20  ntHandler )..   
2a30: 20 20 20 7d 22 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a     }"..   }..}..
2a40: 0d 0a 24 46 61 6c 73 65 43 6f 6e 64 69 74 69 6f  ..$FalseConditio
2a50: 6e 20 3d 20 5b 43 6f 6e 64 69 74 69 6f 6e 5d 3a  n = [Condition]:
2a60: 3a 46 61 6c 73 65 43 6f 6e 64 69 74 69 6f 6e 0d  :FalseCondition.
2a70: 0a 24 54 72 75 65 43 6f 6e 64 69 74 69 6f 6e 20  .$TrueCondition 
2a80: 20 3d 20 5b 43 6f 6e 64 69 74 69 6f 6e 5d 3a 3a   = [Condition]::
2a90: 54 72 75 65 43 6f 6e 64 69 74 69 6f 6e 0d 0a 0d  TrueCondition...
2aa0: 0a 41 64 64 2d 54 79 70 65 20 2d 41 73 73 65 6d  .Add-Type -Assem
2ab0: 62 6c 79 4e 61 6d 65 20 53 79 73 74 65 6d 2e 57  blyName System.W
2ac0: 69 6e 64 6f 77 73 2e 46 6f 72 6d 73 0d 0a 41 64  indows.Forms..Ad
2ad0: 64 2d 41 63 63 65 6c 65 72 61 74 6f 72 20 53 65  d-Accelerator Se
2ae0: 6e 64 4b 65 79 73 20 20 20 20 20 20 20 20 20 20  ndKeys          
2af0: 20 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e   System.Windows.
2b00: 46 6f 72 6d 73 2e 53 65 6e 64 4b 65 79 73 20 20  Forms.SendKeys  
2b10: 20 20 20 20 20 2d 45 41 20 53 69 6c 65 6e 74 6c       -EA Silentl
2b20: 79 43 6f 6e 74 69 6e 75 65 0d 0a 0d 0a 24 41 75  yContinue....$Au
2b30: 74 6f 6d 61 74 69 6f 6e 50 72 6f 70 65 72 74 69  tomationProperti
2b40: 65 73 20 3d 20 5b 73 79 73 74 65 6d 2e 77 69 6e  es = [system.win
2b50: 64 6f 77 73 2e 61 75 74 6f 6d 61 74 69 6f 6e 2e  dows.automation.
2b60: 61 75 74 6f 6d 61 74 69 6f 6e 65 6c 65 6d 65 6e  automationelemen
2b70: 74 2b 61 75 74 6f 6d 61 74 69 6f 6e 65 6c 65 6d  t+automationelem
2b80: 65 6e 74 69 6e 66 6f 72 6d 61 74 69 6f 6e 5d 2e  entinformation].
2b90: 47 65 74 50 72 6f 70 65 72 74 69 65 73 28 29 0d  GetProperties().
2ba0: 0a 0d 0a 53 65 74 2d 41 6c 69 61 73 20 49 6e 76  ...Set-Alias Inv
2bb0: 6f 6b 65 2d 55 49 45 6c 65 6d 65 6e 74 20 49 6e  oke-UIElement In
2bc0: 76 6f 6b 65 2d 49 6e 76 6f 6b 65 2e 49 6e 76 6f  voke-Invoke.Invo
2bd0: 6b 65 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 66  ke....function f
2be0: 6f 72 6d 61 74 74 65 72 20 20 7b 20 45 4e 44 20  ormatter  { END 
2bf0: 7b 0d 0a 20 20 20 24 69 6e 70 75 74 20 7c 20 46  {..   $input | F
2c00: 6f 72 6d 61 74 2d 54 61 62 6c 65 20 40 7b 6c 3d  ormat-Table @{l=
2c10: 22 54 65 78 74 22 3b 65 3d 7b 24 5f 2e 54 65 78  "Text";e={$_.Tex
2c20: 74 2e 53 75 62 53 74 72 69 6e 67 28 30 2c 32 35  t.SubString(0,25
2c30: 29 7d 7d 2c 20 43 6c 61 73 73 4e 61 6d 65 2c 20  )}}, ClassName, 
2c40: 46 72 61 6d 65 77 6f 72 6b 49 64 20 2d 41 75 74  FrameworkId -Aut
2c50: 6f 0d 0a 7d 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f  o..}}....functio
2c60: 6e 20 47 65 74 2d 43 6c 69 63 6b 61 62 6c 65 50  n Get-ClickableP
2c70: 6f 69 6e 74 20 7b 0d 0a 5b 43 6d 64 6c 65 74 42  oint {..[CmdletB
2c80: 69 6e 64 69 6e 67 28 29 5d 0d 0a 70 61 72 61 6d  inding()]..param
2c90: 28 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72  (..   [Parameter
2ca0: 28 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  (ValueFromPipeli
2cb0: 6e 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 5b  ne=$true)]..   [
2cc0: 41 6c 69 61 73 28 22 50 61 72 65 6e 74 22 2c 22  Alias("Parent","
2cd0: 45 6c 65 6d 65 6e 74 22 2c 22 52 6f 6f 74 22 29  Element","Root")
2ce0: 5d 0d 0a 20 20 20 5b 41 75 74 6f 6d 61 74 69 6f  ]..   [Automatio
2cf0: 6e 45 6c 65 6d 65 6e 74 5d 24 49 6e 70 75 74 4f  nElement]$InputO
2d00: 62 6a 65 63 74 0d 0a 29 0d 0a 20 20 20 70 72 6f  bject..)..   pro
2d10: 63 65 73 73 20 7b 0d 0a 20 20 20 20 20 20 24 49  cess {..      $I
2d20: 6e 70 75 74 4f 62 6a 65 63 74 2e 47 65 74 43 6c  nputObject.GetCl
2d30: 69 63 6b 61 62 6c 65 50 6f 69 6e 74 28 29 0d 0a  ickablePoint()..
2d40: 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74     }..}....funct
2d50: 69 6f 6e 20 53 68 6f 77 2d 57 69 6e 64 6f 77 20  ion Show-Window 
2d60: 7b 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e  {..[CmdletBindin
2d70: 67 28 29 5d 0d 0a 70 61 72 61 6d 28 0d 0a 20 20  g()]..param(..  
2d80: 20 5b 50 61 72 61 6d 65 74 65 72 28 56 61 6c 75   [Parameter(Valu
2d90: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74  eFromPipeline=$t
2da0: 72 75 65 29 5d 0d 0a 20 20 20 5b 41 6c 69 61 73  rue)]..   [Alias
2db0: 28 22 50 61 72 65 6e 74 22 2c 22 45 6c 65 6d 65  ("Parent","Eleme
2dc0: 6e 74 22 2c 22 52 6f 6f 74 22 29 5d 0d 0a 20 20  nt","Root")]..  
2dd0: 20 5b 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d   [AutomationElem
2de0: 65 6e 74 5d 24 49 6e 70 75 74 4f 62 6a 65 63 74  ent]$InputObject
2df0: 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74  ..,..   [Paramet
2e00: 65 72 28 29 5d 0d 0a 20 20 20 5b 53 77 69 74 63  er()]..   [Switc
2e10: 68 5d 24 50 61 73 73 74 68 72 75 20 20 20 0d 0a  h]$Passthru   ..
2e20: 29 0d 0a 20 20 20 70 72 6f 63 65 73 73 20 7b 0d  )..   process {.
2e30: 0a 20 20 20 20 20 20 53 65 74 2d 55 49 46 6f 63  .      Set-UIFoc
2e40: 75 73 20 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d  us $InputObject.
2e50: 0a 20 20 20 20 20 20 69 66 28 24 70 61 73 73 74  .      if($passt
2e60: 68 72 75 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  hru) {..        
2e70: 20 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a 20   $InputObject.. 
2e80: 20 20 20 20 20 7d 20 20 20 20 20 20 20 20 0d 0a       }        ..
2e90: 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74     }..}....funct
2ea0: 69 6f 6e 20 53 65 74 2d 55 49 46 6f 63 75 73 20  ion Set-UIFocus 
2eb0: 7b 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e  {..[CmdletBindin
2ec0: 67 28 29 5d 0d 0a 70 61 72 61 6d 28 0d 0a 20 20  g()]..param(..  
2ed0: 20 5b 50 61 72 61 6d 65 74 65 72 28 56 61 6c 75   [Parameter(Valu
2ee0: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74  eFromPipeline=$t
2ef0: 72 75 65 29 5d 0d 0a 20 20 20 5b 41 6c 69 61 73  rue)]..   [Alias
2f00: 28 22 50 61 72 65 6e 74 22 2c 22 45 6c 65 6d 65  ("Parent","Eleme
2f10: 6e 74 22 2c 22 52 6f 6f 74 22 29 5d 0d 0a 20 20  nt","Root")]..  
2f20: 20 5b 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d   [AutomationElem
2f30: 65 6e 74 5d 24 49 6e 70 75 74 4f 62 6a 65 63 74  ent]$InputObject
2f40: 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74  ..,..   [Paramet
2f50: 65 72 28 29 5d 0d 0a 20 20 20 5b 53 77 69 74 63  er()]..   [Switc
2f60: 68 5d 24 50 61 73 73 74 68 72 75 20 20 20 0d 0a  h]$Passthru   ..
2f70: 29 0d 0a 20 20 20 70 72 6f 63 65 73 73 20 7b 0d  )..   process {.
2f80: 0a 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20  .      try {..  
2f90: 20 20 20 20 20 20 20 5b 55 49 41 75 74 6f 6d 61         [UIAutoma
2fa0: 74 69 6f 6e 48 65 6c 70 65 72 5d 3a 3a 53 65 74  tionHelper]::Set
2fb0: 46 6f 72 65 67 72 6f 75 6e 64 28 20 24 49 6e 70  Foreground( $Inp
2fc0: 75 74 4f 62 6a 65 63 74 20 29 0d 0a 20 20 20 20  utObject )..    
2fd0: 20 20 20 20 20 24 49 6e 70 75 74 4f 62 6a 65 63       $InputObjec
2fe0: 74 2e 53 65 74 46 6f 63 75 73 28 29 0d 0a 20 20  t.SetFocus()..  
2ff0: 20 20 20 20 7d 20 63 61 74 63 68 20 7b 0d 0a 20      } catch {.. 
3000: 20 20 20 20 20 20 20 20 57 72 69 74 65 2d 56 65          Write-Ve
3010: 72 62 6f 73 65 20 22 53 65 74 46 6f 63 75 73 20  rbose "SetFocus 
3020: 66 61 69 6c 2c 20 74 72 79 69 6e 67 20 53 65 74  fail, trying Set
3030: 46 6f 72 65 67 72 6f 75 6e 64 22 0d 0a 20 20 20  Foreground"..   
3040: 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66 28 24     }..      if($
3050: 70 61 73 73 74 68 72 75 29 20 7b 0d 0a 20 20 20  passthru) {..   
3060: 20 20 20 20 20 20 24 49 6e 70 75 74 4f 62 6a 65        $InputObje
3070: 63 74 0d 0a 20 20 20 20 20 20 7d 20 20 20 20 20  ct..      }     
3080: 20 20 20 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a     ..   }..}....
3090: 66 75 6e 63 74 69 6f 6e 20 53 65 6e 64 2d 55 49  function Send-UI
30a0: 4b 65 79 73 20 7b 0d 0a 5b 43 6d 64 6c 65 74 42  Keys {..[CmdletB
30b0: 69 6e 64 69 6e 67 28 29 5d 0d 0a 70 61 72 61 6d  inding()]..param
30c0: 28 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72  (..   [Parameter
30d0: 28 50 6f 73 69 74 69 6f 6e 3d 30 29 5d 0d 0a 20  (Position=0)].. 
30e0: 20 20 5b 73 74 72 69 6e 67 5d 24 4b 65 79 73 0d    [string]$Keys.
30f0: 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  .,..   [Paramete
3100: 72 28 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c  r(ValueFromPipel
3110: 69 6e 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20  ine=$true)]..   
3120: 5b 41 6c 69 61 73 28 22 50 61 72 65 6e 74 22 2c  [Alias("Parent",
3130: 22 45 6c 65 6d 65 6e 74 22 2c 22 52 6f 6f 74 22  "Element","Root"
3140: 29 5d 0d 0a 20 20 20 5b 41 75 74 6f 6d 61 74 69  )]..   [Automati
3150: 6f 6e 45 6c 65 6d 65 6e 74 5d 24 49 6e 70 75 74  onElement]$Input
3160: 4f 62 6a 65 63 74 0d 0a 2c 0d 0a 20 20 20 5b 50  Object..,..   [P
3170: 61 72 61 6d 65 74 65 72 28 29 5d 0d 0a 20 20 20  arameter()]..   
3180: 5b 53 77 69 74 63 68 5d 24 50 61 73 73 74 68 72  [Switch]$Passthr
3190: 75 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65  u..,..   [Parame
31a0: 74 65 72 28 29 5d 0d 0a 20 20 20 5b 53 77 69 74  ter()]..   [Swit
31b0: 63 68 5d 24 41 73 79 6e 63 0d 0a 29 0d 0a 20 20  ch]$Async..)..  
31c0: 20 70 72 6f 63 65 73 73 20 7b 0d 0a 20 20 20 20   process {..    
31d0: 20 20 69 66 28 21 24 49 6e 70 75 74 4f 62 6a 65    if(!$InputObje
31e0: 63 74 2e 43 75 72 72 65 6e 74 2e 49 73 45 6e 61  ct.Current.IsEna
31f0: 62 6c 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  bled)..      {..
3200: 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d 57           Write-W
3210: 61 72 6e 69 6e 67 20 22 54 68 65 20 43 6f 6e 74  arning "The Cont
3220: 72 6f 6c 20 69 73 20 6e 6f 74 20 65 6e 61 62 6c  rol is not enabl
3230: 65 64 21 22 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ed!"..      }.. 
3240: 20 20 20 20 20 69 66 28 21 24 49 6e 70 75 74 4f       if(!$InputO
3250: 62 6a 65 63 74 2e 43 75 72 72 65 6e 74 2e 49 73  bject.Current.Is
3260: 4b 65 79 62 6f 61 72 64 46 6f 63 75 73 61 62 6c  KeyboardFocusabl
3270: 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  e)..      {..   
3280: 20 20 20 20 20 20 57 72 69 74 65 2d 57 61 72 6e        Write-Warn
3290: 69 6e 67 20 22 54 68 65 20 43 6f 6e 74 72 6f 6c  ing "The Control
32a0: 20 69 73 20 6e 6f 74 20 66 6f 63 75 73 61 62 6c   is not focusabl
32b0: 65 21 22 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  e!"..      }..  
32c0: 20 20 20 20 53 65 74 2d 55 49 46 6f 63 75 73 20      Set-UIFocus 
32d0: 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a 20 20  $InputObject..  
32e0: 20 20 20 20 0d 0a 20 20 20 20 20 20 69 66 28 24      ..      if($
32f0: 41 73 79 6e 63 29 20 7b 0d 0a 20 20 20 20 20 20  Async) {..      
3300: 20 20 20 5b 53 65 6e 64 4b 65 79 73 5d 3a 3a 53     [SendKeys]::S
3310: 65 6e 64 28 20 24 4b 65 79 73 20 29 0d 0a 20 20  end( $Keys )..  
3320: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
3330: 20 20 20 20 20 20 20 5b 53 65 6e 64 4b 65 79 73         [SendKeys
3340: 5d 3a 3a 53 65 6e 64 57 61 69 74 28 20 24 4b 65  ]::SendWait( $Ke
3350: 79 73 20 29 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ys )..      }.. 
3360: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 69 66 28       ..      if(
3370: 24 70 61 73 73 74 68 72 75 29 20 7b 0d 0a 20 20  $passthru) {..  
3380: 20 20 20 20 20 20 20 24 49 6e 70 75 74 4f 62 6a         $InputObj
3390: 65 63 74 0d 0a 20 20 20 20 20 20 7d 20 20 20 20  ect..      }    
33a0: 20 20 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 66    ..   }..}....f
33b0: 75 6e 63 74 69 6f 6e 20 53 65 74 2d 55 49 54 65  unction Set-UITe
33c0: 78 74 20 7b 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e  xt {..[CmdletBin
33d0: 64 69 6e 67 28 29 5d 0d 0a 70 61 72 61 6d 28 0d  ding()]..param(.
33e0: 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50  .   [Parameter(P
33f0: 6f 73 69 74 69 6f 6e 3d 30 29 5d 0d 0a 20 20 20  osition=0)]..   
3400: 5b 73 74 72 69 6e 67 5d 24 54 65 78 74 0d 0a 2c  [string]$Text..,
3410: 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  ..   [Parameter(
3420: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
3430: 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 5b 41  e=$true)]..   [A
3440: 6c 69 61 73 28 22 50 61 72 65 6e 74 22 2c 22 45  lias("Parent","E
3450: 6c 65 6d 65 6e 74 22 2c 22 52 6f 6f 74 22 29 5d  lement","Root")]
3460: 0d 0a 20 20 20 5b 41 75 74 6f 6d 61 74 69 6f 6e  ..   [Automation
3470: 45 6c 65 6d 65 6e 74 5d 24 49 6e 70 75 74 4f 62  Element]$InputOb
3480: 6a 65 63 74 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72  ject..,..   [Par
3490: 61 6d 65 74 65 72 28 29 5d 0d 0a 20 20 20 5b 53  ameter()]..   [S
34a0: 77 69 74 63 68 5d 24 50 61 73 73 74 68 72 75 20  witch]$Passthru 
34b0: 20 20 0d 0a 29 0d 0a 20 20 20 70 72 6f 63 65 73    ..)..   proces
34c0: 73 20 7b 0d 0a 20 20 20 20 20 20 69 66 28 21 24  s {..      if(!$
34d0: 49 6e 70 75 74 4f 62 6a 65 63 74 2e 43 75 72 72  InputObject.Curr
34e0: 65 6e 74 2e 49 73 45 6e 61 62 6c 65 64 29 0d 0a  ent.IsEnabled)..
34f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3500: 20 20 57 72 69 74 65 2d 57 61 72 6e 69 6e 67 20    Write-Warning 
3510: 22 54 68 65 20 43 6f 6e 74 72 6f 6c 20 69 73 20  "The Control is 
3520: 6e 6f 74 20 65 6e 61 62 6c 65 64 21 22 0d 0a 20  not enabled!".. 
3530: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66       }..      if
3540: 28 21 24 49 6e 70 75 74 4f 62 6a 65 63 74 2e 43  (!$InputObject.C
3550: 75 72 72 65 6e 74 2e 49 73 4b 65 79 62 6f 61 72  urrent.IsKeyboar
3560: 64 46 6f 63 75 73 61 62 6c 65 29 0d 0a 20 20 20  dFocusable)..   
3570: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 57     {..         W
3580: 72 69 74 65 2d 57 61 72 6e 69 6e 67 20 22 54 68  rite-Warning "Th
3590: 65 20 43 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f 74  e Control is not
35a0: 20 66 6f 63 75 73 61 62 6c 65 21 22 0d 0a 20 20   focusable!"..  
35b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 0d 0a 20      }..      .. 
35c0: 20 20 20 20 20 24 76 61 6c 75 65 50 61 74 74 65       $valuePatte
35d0: 72 6e 20 3d 20 24 6e 75 6c 6c 0d 0a 20 20 20 20  rn = $null..    
35e0: 20 20 69 66 28 24 49 6e 70 75 74 4f 62 6a 65 63    if($InputObjec
35f0: 74 2e 54 72 79 47 65 74 43 75 72 72 65 6e 74 50  t.TryGetCurrentP
3600: 61 74 74 65 72 6e 28 5b 56 61 6c 75 65 50 61 74  attern([ValuePat
3610: 74 65 72 6e 5d 3a 3a 50 61 74 74 65 72 6e 2c 5b  tern]::Pattern,[
3620: 72 65 66 5d 24 76 61 6c 75 65 50 61 74 74 65 72  ref]$valuePatter
3630: 6e 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  n)) {..         
3640: 57 72 69 74 65 2d 56 65 72 62 6f 73 65 20 22 53  Write-Verbose "S
3650: 65 74 20 76 69 61 20 56 61 6c 75 65 50 61 74 74  et via ValuePatt
3660: 65 72 6e 21 22 0d 0a 20 20 20 20 20 20 20 20 20  ern!"..         
3670: 24 76 61 6c 75 65 50 61 74 74 65 72 6e 2e 53 65  $valuePattern.Se
3680: 74 56 61 6c 75 65 28 20 24 54 65 78 74 20 29 0d  tValue( $Text ).
3690: 0a 20 20 20 20 20 20 7d 20 0d 0a 20 20 20 20 20  .      } ..     
36a0: 20 65 6c 73 65 69 66 28 24 49 6e 70 75 74 4f 62   elseif($InputOb
36b0: 6a 65 63 74 2e 43 75 72 72 65 6e 74 2e 49 73 4b  ject.Current.IsK
36c0: 65 79 62 6f 61 72 64 46 6f 63 75 73 61 62 6c 65  eyboardFocusable
36d0: 29 20 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ) ..      {..   
36e0: 20 20 20 20 20 20 53 65 74 2d 55 49 46 6f 63 75        Set-UIFocu
36f0: 73 20 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a  s $InputObject..
3700: 20 20 20 20 20 20 20 20 20 5b 53 65 6e 64 4b 65           [SendKe
3710: 79 73 5d 3a 3a 53 65 6e 64 57 61 69 74 28 22 5e  ys]::SendWait("^
3720: 7b 48 4f 4d 45 7d 22 29 3b 0d 0a 20 20 20 20 20  {HOME}");..     
3730: 20 20 20 20 5b 53 65 6e 64 4b 65 79 73 5d 3a 3a      [SendKeys]::
3740: 53 65 6e 64 57 61 69 74 28 22 5e 2b 7b 45 4e 44  SendWait("^+{END
3750: 7d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 5b  }");..         [
3760: 53 65 6e 64 4b 65 79 73 5d 3a 3a 53 65 6e 64 57  SendKeys]::SendW
3770: 61 69 74 28 22 7b 44 45 4c 7d 22 29 3b 0d 0a 20  ait("{DEL}");.. 
3780: 20 20 20 20 20 20 20 20 5b 53 65 6e 64 4b 65 79          [SendKey
3790: 73 5d 3a 3a 53 65 6e 64 57 61 69 74 28 20 24 54  s]::SendWait( $T
37a0: 65 78 74 20 29 0d 0a 20 20 20 20 20 20 7d 0d 0a  ext )..      }..
37b0: 20 20 20 20 20 20 69 66 28 24 70 61 73 73 74 68        if($passth
37c0: 72 75 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ru) {..         
37d0: 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a 20 20  $InputObject..  
37e0: 20 20 20 20 7d 20 20 20 20 20 20 0d 0a 20 20 20      }      ..   
37f0: 7d 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e  }..}....function
3800: 20 53 65 6c 65 63 74 2d 55 49 45 6c 65 6d 65 6e   Select-UIElemen
3810: 74 20 7b 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64  t {..[CmdletBind
3820: 69 6e 67 28 44 65 66 61 75 6c 74 50 61 72 61 6d  ing(DefaultParam
3830: 65 74 65 72 53 65 74 4e 61 6d 65 3d 22 46 72 6f  eterSetName="Fro
3840: 6d 50 61 72 65 6e 74 22 29 5d 0d 0a 50 41 52 41  mParent")]..PARA
3850: 4d 20 28 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74  M (..   [Paramet
3860: 65 72 28 50 61 72 61 6d 65 74 65 72 53 65 74 4e  er(ParameterSetN
3870: 61 6d 65 3d 22 46 72 6f 6d 57 69 6e 64 6f 77 48  ame="FromWindowH
3880: 61 6e 64 6c 65 22 2c 20 50 6f 73 69 74 69 6f 6e  andle", Position
3890: 3d 22 30 22 2c 20 4d 61 6e 64 61 74 6f 72 79 3d  ="0", Mandatory=
38a0: 24 74 72 75 65 29 5d 20 0d 0a 20 20 20 5b 41 6c  $true)] ..   [Al
38b0: 69 61 73 28 22 4d 61 69 6e 57 69 6e 64 6f 77 48  ias("MainWindowH
38c0: 61 6e 64 6c 65 22 2c 22 68 57 6e 64 22 2c 22 48  andle","hWnd","H
38d0: 61 6e 64 6c 65 22 2c 22 57 68 22 29 5d 0d 0a 20  andle","Wh")].. 
38e0: 20 20 5b 49 6e 74 50 74 72 5b 5d 5d 24 57 69 6e    [IntPtr[]]$Win
38f0: 64 6f 77 48 61 6e 64 6c 65 3d 5b 49 6e 74 50 74  dowHandle=[IntPt
3900: 72 5d 3a 3a 5a 65 72 6f 0d 0a 2c 0d 0a 20 20 20  r]::Zero..,..   
3910: 5b 50 61 72 61 6d 65 74 65 72 28 50 61 72 61 6d  [Parameter(Param
3920: 65 74 65 72 53 65 74 4e 61 6d 65 3d 22 46 72 6f  eterSetName="Fro
3930: 6d 50 6f 69 6e 74 22 2c 20 50 6f 73 69 74 69 6f  mPoint", Positio
3940: 6e 3d 22 30 22 2c 20 4d 61 6e 64 61 74 6f 72 79  n="0", Mandatory
3950: 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 5b 53 79  =$true)]..   [Sy
3960: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 50 6f 69  stem.Windows.Poi
3970: 6e 74 5b 5d 5d 24 50 6f 69 6e 74 0d 0a 2c 0d 0a  nt[]]$Point..,..
3980: 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 61     [Parameter(Pa
3990: 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22  rameterSetName="
39a0: 46 72 6f 6d 50 61 72 65 6e 74 22 2c 20 56 61 6c  FromParent", Val
39b0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24  ueFromPipeline=$
39c0: 74 72 75 65 2c 20 50 6f 73 69 74 69 6f 6e 3d 31  true, Position=1
39d0: 30 30 29 5d 0d 0a 20 20 20 5b 53 79 73 74 65 6d  00)]..   [System
39e0: 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74  .Windows.Automat
39f0: 69 6f 6e 2e 41 75 74 6f 6d 61 74 69 6f 6e 45 6c  ion.AutomationEl
3a00: 65 6d 65 6e 74 5d 24 50 61 72 65 6e 74 20 3d 20  ement]$Parent = 
3a10: 5b 55 49 41 75 74 6f 6d 61 74 69 6f 6e 48 65 6c  [UIAutomationHel
3a20: 70 65 72 5d 3a 3a 52 6f 6f 74 45 6c 65 6d 65 6e  per]::RootElemen
3a30: 74 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65  t..,..   [Parame
3a40: 74 65 72 28 50 61 72 61 6d 65 74 65 72 53 65 74  ter(ParameterSet
3a50: 4e 61 6d 65 3d 22 46 72 6f 6d 50 61 72 65 6e 74  Name="FromParent
3a60: 22 2c 20 50 6f 73 69 74 69 6f 6e 3d 22 30 22 29  ", Position="0")
3a70: 5d 0d 0a 20 20 20 5b 41 6c 69 61 73 28 22 57 69  ]..   [Alias("Wi
3a80: 6e 64 6f 77 4e 61 6d 65 22 29 5d 0d 0a 20 20 20  ndowName")]..   
3a90: 5b 53 74 72 69 6e 67 5b 5d 5d 24 4e 61 6d 65 0d  [String[]]$Name.
3aa0: 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  .,..   [Paramete
3ab0: 72 28 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61  r(ParameterSetNa
3ac0: 6d 65 3d 22 46 72 6f 6d 50 61 72 65 6e 74 22 2c  me="FromParent",
3ad0: 20 50 6f 73 69 74 69 6f 6e 3d 22 31 22 29 5d 0d   Position="1")].
3ae0: 0a 20 20 20 5b 41 6c 69 61 73 28 22 54 79 70 65  .   [Alias("Type
3af0: 22 2c 22 43 74 22 29 5d 0d 0a 20 20 20 5b 53 79  ","Ct")]..   [Sy
3b00: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74  stem.Windows.Aut
3b10: 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 74 72 6f 6c 54  omation.ControlT
3b20: 79 70 65 5d 0d 0a 20 20 20 5b 53 74 61 74 69 63  ype]..   [Static
3b30: 46 69 65 6c 64 28 28 5b 53 79 73 74 65 6d 2e 57  Field(([System.W
3b40: 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f  indows.Automatio
3b50: 6e 2e 43 6f 6e 74 72 6f 6c 54 79 70 65 5d 29 29  n.ControlType]))
3b60: 5d 24 43 6f 6e 74 72 6f 6c 54 79 70 65 0d 0a 2c  ]$ControlType..,
3b70: 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  ..   [Parameter(
3b80: 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65  ParameterSetName
3b90: 3d 22 46 72 6f 6d 50 61 72 65 6e 74 22 29 5d 0d  ="FromParent")].
3ba0: 0a 20 20 20 5b 41 6c 69 61 73 28 22 55 49 64 22  .   [Alias("UId"
3bb0: 29 5d 0d 0a 20 20 20 5b 53 74 72 69 6e 67 5b 5d  )]..   [String[]
3bc0: 5d 24 41 75 74 6f 6d 61 74 69 6f 6e 49 64 0d 0a  ]$AutomationId..
3bd0: 2c 0d 0a 20 20 20 23 23 20 52 65 6d 6f 76 65 64  ,..   ## Removed
3be0: 20 22 49 64 22 20 61 6c 69 61 73 20 74 6f 20 61   "Id" alias to a
3bf0: 6c 6c 6f 77 20 67 65 74 2d 70 72 6f 63 65 73 73  llow get-process
3c00: 20 7c 20 53 65 6c 65 63 74 2d 57 69 6e 64 6f 77   | Select-Window
3c10: 20 70 69 70 65 6c 69 6e 65 20 74 6f 20 66 69 6e   pipeline to fin
3c20: 64 20 6a 75 73 74 20 4d 61 69 6e 57 69 6e 64 6f  d just MainWindo
3c30: 77 48 61 6e 64 6c 65 0d 0a 20 20 20 5b 50 61 72  wHandle..   [Par
3c40: 61 6d 65 74 65 72 28 50 61 72 61 6d 65 74 65 72  ameter(Parameter
3c50: 53 65 74 4e 61 6d 65 3d 22 46 72 6f 6d 50 61 72  SetName="FromPar
3c60: 65 6e 74 22 2c 20 56 61 6c 75 65 46 72 6f 6d 50  ent", ValueFromP
3c70: 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65 72 74  ipelineByPropert
3c80: 79 4e 61 6d 65 3d 24 74 72 75 65 20 29 5d 0d 0a  yName=$true )]..
3c90: 20 20 20 5b 41 6c 69 61 73 28 22 49 64 22 29 5d     [Alias("Id")]
3ca0: 0d 0a 20 20 20 5b 49 6e 74 5b 5d 5d 24 50 49 44  ..   [Int[]]$PID
3cb0: 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74  ..,..   [Paramet
3cc0: 65 72 28 50 61 72 61 6d 65 74 65 72 53 65 74 4e  er(ParameterSetN
3cd0: 61 6d 65 3d 22 46 72 6f 6d 50 61 72 65 6e 74 22  ame="FromParent"
3ce0: 29 5d 0d 0a 20 20 20 5b 41 6c 69 61 73 28 22 50  )]..   [Alias("P
3cf0: 6e 22 29 5d 0d 0a 20 20 20 5b 53 74 72 69 6e 67  n")]..   [String
3d00: 5b 5d 5d 24 50 72 6f 63 65 73 73 4e 61 6d 65 0d  []]$ProcessName.
3d10: 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  .,..   [Paramete
3d20: 72 28 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61  r(ParameterSetNa
3d30: 6d 65 3d 22 46 72 6f 6d 50 61 72 65 6e 74 22 29  me="FromParent")
3d40: 5d 0d 0a 20 20 20 5b 41 6c 69 61 73 28 22 43 6e  ]..   [Alias("Cn
3d50: 22 29 5d 0d 0a 20 20 20 5b 53 74 72 69 6e 67 5b  ")]..   [String[
3d60: 5d 5d 24 43 6c 61 73 73 4e 61 6d 65 0d 0a 2c 0d  ]]$ClassName..,.
3d70: 0a 20 20 20 5b 73 77 69 74 63 68 5d 24 52 65 63  .   [switch]$Rec
3d80: 75 72 73 65 0d 0a 2c 0d 0a 20 20 20 5b 73 77 69  urse..,..   [swi
3d90: 74 63 68 5d 24 42 61 72 65 0d 0a 29 0d 0a 70 72  tch]$Bare..)..pr
3da0: 6f 63 65 73 73 20 7b 0d 0a 0d 0a 20 20 20 57 72  ocess {....   Wr
3db0: 69 74 65 2d 44 65 62 75 67 20 22 50 61 72 61 6d  ite-Debug "Param
3dc0: 65 74 65 72 73 20 46 6f 75 6e 64 22 0d 0a 20 20  eters Found"..  
3dd0: 20 57 72 69 74 65 2d 44 65 62 75 67 20 28 24 50   Write-Debug ($P
3de0: 53 42 6f 75 6e 64 50 61 72 61 6d 65 74 65 72 73  SBoundParameters
3df0: 20 7c 20 46 6f 72 6d 61 74 2d 54 61 62 6c 65 20   | Format-Table 
3e00: 7c 20 4f 75 74 2d 53 74 72 69 6e 67 29 0d 0a 0d  | Out-String)...
3e10: 0a 20 20 20 24 73 65 61 72 63 68 20 3d 20 22 43  .   $search = "C
3e20: 68 69 6c 64 72 65 6e 22 0d 0a 20 20 20 69 66 28  hildren"..   if(
3e30: 24 52 65 63 75 72 73 65 29 20 7b 20 24 73 65 61  $Recurse) { $sea
3e40: 72 63 68 20 3d 20 22 44 65 73 63 65 6e 64 61 6e  rch = "Descendan
3e50: 74 73 22 20 7d 0d 0a 20 20 20 0d 0a 20 20 20 24  ts" }..   ..   $
3e60: 63 6f 6e 64 69 74 69 6f 6e 20 3d 20 5b 53 79 73  condition = [Sys
3e70: 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f  tem.Windows.Auto
3e80: 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69 6f 6e  mation.Condition
3e90: 5d 3a 3a 54 72 75 65 43 6f 6e 64 69 74 69 6f 6e  ]::TrueCondition
3ea0: 0d 0a 20 20 20 0d 0a 20 20 20 57 72 69 74 65 2d  ..   ..   Write-
3eb0: 56 65 72 62 6f 73 65 20 24 50 53 43 6d 64 6c 65  Verbose $PSCmdle
3ec0: 74 2e 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61  t.ParameterSetNa
3ed0: 6d 65 0d 0a 20 20 20 73 77 69 74 63 68 20 2d 72  me..   switch -r
3ee0: 65 67 65 78 20 28 24 50 53 43 6d 64 6c 65 74 2e  egex ($PSCmdlet.
3ef0: 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65  ParameterSetName
3f00: 29 20 7b 0d 0a 20 20 20 20 20 20 22 46 72 6f 6d  ) {..      "From
3f10: 57 69 6e 64 6f 77 48 61 6e 64 6c 65 22 20 7b 0d  WindowHandle" {.
3f20: 0a 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d  .         Write-
3f30: 56 65 72 62 6f 73 65 20 22 46 69 6e 64 69 6e 67  Verbose "Finding
3f40: 20 66 72 6f 6d 20 57 69 6e 64 6f 77 20 48 61 6e   from Window Han
3f50: 64 6c 65 20 24 48 57 6e 64 22 0d 0a 20 20 20 20  dle $HWnd"..    
3f60: 20 20 20 20 20 24 45 6c 65 6d 65 6e 74 20 3d 20       $Element = 
3f70: 24 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  $(..            
3f80: 66 6f 72 65 61 63 68 28 24 68 57 6e 64 20 69 6e  foreach($hWnd in
3f90: 20 24 57 69 6e 64 6f 77 48 61 6e 64 6c 65 29 20   $WindowHandle) 
3fa0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3fb0: 20 20 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77    [System.Window
3fc0: 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 41 75 74  s.Automation.Aut
3fd0: 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d 3a  omationElement]:
3fe0: 3a 46 72 6f 6d 48 61 6e 64 6c 65 28 20 24 68 57  :FromHandle( $hW
3ff0: 6e 64 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20  nd )..          
4000: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 29 0d    }..         ).
4010: 0a 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e  .         contin
4020: 75 65 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  ue..      }..   
4030: 20 20 20 22 46 72 6f 6d 50 6f 69 6e 74 22 20 7b     "FromPoint" {
4040: 0d 0a 20 20 20 20 20 20 20 20 20 57 72 69 74 65  ..         Write
4050: 2d 56 65 72 62 6f 73 65 20 22 46 69 6e 64 69 6e  -Verbose "Findin
4060: 67 20 66 72 6f 6d 20 50 6f 69 6e 74 20 24 50 6f  g from Point $Po
4070: 69 6e 74 22 0d 0a 20 20 20 20 20 20 20 20 20 24  int"..         $
4080: 45 6c 65 6d 65 6e 74 20 3d 20 24 28 0d 0a 20 20  Element = $(..  
4090: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
40a0: 68 28 24 70 74 20 69 6e 20 24 50 6f 69 6e 74 29  h($pt in $Point)
40b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
40c0: 20 20 20 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f     [System.Windo
40d0: 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 41 75  ws.Automation.Au
40e0: 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d  tomationElement]
40f0: 3a 3a 46 72 6f 6d 50 6f 69 6e 74 28 20 24 70 74  ::FromPoint( $pt
4100: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
4110: 7d 0d 0a 20 20 20 20 20 20 20 20 20 29 0d 0a 20  }..         ).. 
4120: 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
4130: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
4140: 20 22 46 72 6f 6d 50 61 72 65 6e 74 22 20 7b 0d   "FromParent" {.
4150: 0a 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d  .         Write-
4160: 56 65 72 62 6f 73 65 20 22 46 69 6e 64 69 6e 67  Verbose "Finding
4170: 20 66 72 6f 6d 20 50 61 72 65 6e 74 21 22 0d 0a   from Parent!"..
4180: 20 20 20 20 20 20 20 20 20 23 23 20 5b 53 79 73           ## [Sys
4190: 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f  tem.Windows.Auto
41a0: 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69 6f 6e  mation.Condition
41b0: 5b 5d 5d 24 63 6f 6e 64 69 74 69 6f 6e 73 20 3d  []]$conditions =
41c0: 20 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73   [System.Windows
41d0: 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64  .Automation.Cond
41e0: 69 74 69 6f 6e 5d 3a 3a 54 72 75 65 43 6f 6e 64  ition]::TrueCond
41f0: 69 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20  ition..         
4200: 5b 53 63 72 69 70 74 42 6c 6f 63 6b 5b 5d 5d 24  [ScriptBlock[]]$
4210: 66 69 6c 74 65 72 73 20 3d 20 40 28 29 0d 0a 20  filters = @().. 
4220: 20 20 20 20 20 20 20 20 69 66 28 24 41 75 74 6f          if($Auto
4230: 6d 61 74 69 6f 6e 49 64 29 20 7b 0d 0a 20 20 20  mationId) {..   
4240: 20 20 20 20 20 20 20 20 20 5b 53 79 73 74 65 6d           [System
4250: 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74  .Windows.Automat
4260: 69 6f 6e 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d  ion.Condition[]]
4270: 24 63 75 72 72 65 6e 74 20 3d 20 24 28 0d 0a 20  $current = $(.. 
4280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
4290: 72 65 61 63 68 28 24 61 69 64 20 69 6e 20 24 41  reach($aid in $A
42a0: 75 74 6f 6d 61 74 69 6f 6e 49 64 29 20 7b 0d 0a  utomationId) {..
42b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42c0: 20 20 6e 65 77 2d 6f 62 6a 65 63 74 20 53 79 73    new-object Sys
42d0: 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f  tem.Windows.Auto
42e0: 6d 61 74 69 6f 6e 2e 50 72 6f 70 65 72 74 79 43  mation.PropertyC
42f0: 6f 6e 64 69 74 69 6f 6e 20 28 5b 53 79 73 74 65  ondition ([Syste
4300: 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61  m.Windows.Automa
4310: 74 69 6f 6e 2e 41 75 74 6f 6d 61 74 69 6f 6e 45  tion.AutomationE
4320: 6c 65 6d 65 6e 74 5d 3a 3a 41 75 74 6f 6d 61 74  lement]::Automat
4330: 69 6f 6e 49 64 50 72 6f 70 65 72 74 79 29 2c 20  ionIdProperty), 
4340: 24 61 69 64 0d 0a 20 20 20 20 20 20 20 20 20 20  $aid..          
4350: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4360: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
4370: 20 20 20 69 66 28 24 63 75 72 72 65 6e 74 2e 4c     if($current.L
4380: 65 6e 67 74 68 20 2d 67 74 20 31 29 20 7b 0d 0a  ength -gt 1) {..
4390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b                 [
43a0: 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41  System.Windows.A
43b0: 75 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74  utomation.Condit
43c0: 69 6f 6e 5b 5d 5d 24 63 6f 6e 64 69 74 69 6f 6e  ion[]]$condition
43d0: 73 20 2b 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20  s += New-Object 
43e0: 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41  System.Windows.A
43f0: 75 74 6f 6d 61 74 69 6f 6e 2e 4f 72 43 6f 6e 64  utomation.OrCond
4400: 69 74 69 6f 6e 20 24 63 75 72 72 65 6e 74 0d 0a  ition $current..
4410: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
4420: 73 65 69 66 28 24 63 75 72 72 65 6e 74 2e 4c 65  seif($current.Le
4430: 6e 67 74 68 20 2d 65 71 20 31 29 20 7b 0d 0a 20  ngth -eq 1) {.. 
4440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 53                [S
4450: 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75  ystem.Windows.Au
4460: 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69  tomation.Conditi
4470: 6f 6e 5b 5d 5d 24 63 6f 6e 64 69 74 69 6f 6e 73  on[]]$conditions
4480: 20 2b 3d 20 24 63 75 72 72 65 6e 74 5b 30 5d 0d   += $current[0].
4490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20  .            }  
44a0: 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ..         }..  
44b0: 20 20 20 20 20 20 20 69 66 28 24 50 49 44 29 20         if($PID) 
44c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  {..            [
44d0: 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41  System.Windows.A
44e0: 75 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74  utomation.Condit
44f0: 69 6f 6e 5b 5d 5d 24 63 75 72 72 65 6e 74 20 3d  ion[]]$current =
4500: 20 24 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20   $(..           
4510: 20 20 20 20 66 6f 72 65 61 63 68 28 24 70 20 69      foreach($p i
4520: 6e 20 24 50 49 44 29 20 7b 0d 0a 20 20 20 20 20  n $PID) {..     
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
4540: 2d 6f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 57  -object System.W
4550: 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f  indows.Automatio
4560: 6e 2e 50 72 6f 70 65 72 74 79 43 6f 6e 64 69 74  n.PropertyCondit
4570: 69 6f 6e 20 28 5b 53 79 73 74 65 6d 2e 57 69 6e  ion ([System.Win
4580: 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  dows.Automation.
4590: 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e  AutomationElemen
45a0: 74 5d 3a 3a 50 72 6f 63 65 73 73 49 64 50 72 6f  t]::ProcessIdPro
45b0: 70 65 72 74 79 29 2c 20 24 70 0d 0a 20 20 20 20  perty), $p..    
45c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
45d0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
45e0: 20 20 20 20 20 20 20 20 20 69 66 28 24 63 75 72           if($cur
45f0: 72 65 6e 74 2e 4c 65 6e 67 74 68 20 2d 67 74 20  rent.Length -gt 
4600: 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  1) {..          
4610: 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 57 69 6e       [System.Win
4620: 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  dows.Automation.
4630: 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63 6f 6e  Condition[]]$con
4640: 64 69 74 69 6f 6e 73 20 2b 3d 20 4e 65 77 2d 4f  ditions += New-O
4650: 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 57 69 6e  bject System.Win
4660: 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  dows.Automation.
4670: 4f 72 43 6f 6e 64 69 74 69 6f 6e 20 24 63 75 72  OrCondition $cur
4680: 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  rent..          
4690: 20 20 7d 20 65 6c 73 65 69 66 28 24 63 75 72 72    } elseif($curr
46a0: 65 6e 74 2e 4c 65 6e 67 74 68 20 2d 65 71 20 31  ent.Length -eq 1
46b0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
46c0: 20 20 20 20 5b 53 79 73 74 65 6d 2e 57 69 6e 64      [System.Wind
46d0: 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 43  ows.Automation.C
46e0: 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63 6f 6e 64  ondition[]]$cond
46f0: 69 74 69 6f 6e 73 20 2b 3d 20 24 63 75 72 72 65  itions += $curre
4700: 6e 74 5b 30 5d 0d 0a 20 20 20 20 20 20 20 20 20  nt[0]..         
4710: 20 20 20 7d 20 20 20 20 20 20 20 20 20 0d 0a 20     }         .. 
4720: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
4730: 20 20 20 20 69 66 28 24 50 72 6f 63 65 73 73 4e      if($ProcessN
4740: 61 6d 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ame) {..        
4750: 20 20 20 20 69 66 28 24 50 72 6f 63 65 73 73 4e      if($ProcessN
4760: 61 6d 65 20 2d 6d 61 74 63 68 20 22 5c 3f 7c 5c  ame -match "\?|\
4770: 2a 7c 5c 5b 22 29 20 7b 0d 0a 20 20 20 20 20 20  *|\[") {..      
4780: 20 20 20 20 20 20 20 20 20 5b 53 63 72 69 70 74           [Script
4790: 42 6c 6f 63 6b 5b 5d 5d 24 66 69 6c 74 65 72 73  Block[]]$filters
47a0: 20 2b 3d 20 7b 20 24 28 66 6f 72 65 61 63 68 28   += { $(foreach(
47b0: 24 70 20 69 6e 20 24 50 72 6f 63 65 73 73 4e 61  $p in $ProcessNa
47c0: 6d 65 29 7b 20 28 47 65 74 2d 50 72 6f 63 65 73  me){ (Get-Proces
47d0: 73 20 2d 69 64 20 24 5f 2e 47 65 74 43 75 72 72  s -id $_.GetCurr
47e0: 65 6e 74 50 72 6f 70 65 72 74 79 56 61 6c 75 65  entPropertyValue
47f0: 28 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73  ([System.Windows
4800: 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 41 75 74 6f  .Automation.Auto
4810: 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d 3a 3a  mationElement]::
4820: 50 72 6f 63 65 73 73 49 64 50 72 6f 70 65 72 74  ProcessIdPropert
4830: 79 29 29 2e 50 72 6f 63 65 73 73 4e 61 6d 65 20  y)).ProcessName 
4840: 2d 6c 69 6b 65 20 24 70 20 7d 29 20 2d 63 6f 6e  -like $p }) -con
4850: 74 61 69 6e 73 20 24 74 72 75 65 20 7d 20 0d 0a  tains $true } ..
4860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
4870: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
4880: 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 57 69 6e       [System.Win
4890: 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  dows.Automation.
48a0: 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63 75 72  Condition[]]$cur
48b0: 72 65 6e 74 20 3d 20 24 28 0d 0a 20 20 20 20 20  rent = $(..     
48c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
48d0: 65 61 63 68 28 24 70 20 69 6e 20 47 65 74 2d 50  each($p in Get-P
48e0: 72 6f 63 65 73 73 20 2d 4e 61 6d 65 20 24 50 72  rocess -Name $Pr
48f0: 6f 63 65 73 73 4e 61 6d 65 29 20 7b 0d 0a 20 20  ocessName) {..  
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4910: 20 20 20 6e 65 77 2d 6f 62 6a 65 63 74 20 53 79     new-object Sy
4920: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74  stem.Windows.Aut
4930: 6f 6d 61 74 69 6f 6e 2e 50 72 6f 70 65 72 74 79  omation.Property
4940: 43 6f 6e 64 69 74 69 6f 6e 20 28 5b 53 79 73 74  Condition ([Syst
4950: 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d  em.Windows.Autom
4960: 61 74 69 6f 6e 2e 41 75 74 6f 6d 61 74 69 6f 6e  ation.Automation
4970: 45 6c 65 6d 65 6e 74 5d 3a 3a 50 72 6f 63 65 73  Element]::Proces
4980: 73 49 64 50 72 6f 70 65 72 74 79 29 2c 20 24 70  sIdProperty), $p
4990: 2e 69 64 2c 20 22 49 67 6e 6f 72 65 43 61 73 65  .id, "IgnoreCase
49a0: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "..             
49b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
49c0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
49d0: 20 20 20 20 20 20 20 20 20 69 66 28 24 63 75 72           if($cur
49e0: 72 65 6e 74 2e 4c 65 6e 67 74 68 20 2d 67 74 20  rent.Length -gt 
49f0: 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  1) {..          
4a00: 20 20 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e          [System.
4a10: 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69  Windows.Automati
4a20: 6f 6e 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24  on.Condition[]]$
4a30: 63 6f 6e 64 69 74 69 6f 6e 73 20 2b 3d 20 4e 65  conditions += Ne
4a40: 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e  w-Object System.
4a50: 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69  Windows.Automati
4a60: 6f 6e 2e 4f 72 43 6f 6e 64 69 74 69 6f 6e 20 24  on.OrCondition $
4a70: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 20  current..       
4a80: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66          } elseif
4a90: 28 24 63 75 72 72 65 6e 74 2e 4c 65 6e 67 74 68  ($current.Length
4aa0: 20 2d 65 71 20 31 29 20 7b 0d 0a 20 20 20 20 20   -eq 1) {..     
4ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 53 79               [Sy
4ac0: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74  stem.Windows.Aut
4ad0: 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69 6f  omation.Conditio
4ae0: 6e 5b 5d 5d 24 63 6f 6e 64 69 74 69 6f 6e 73 20  n[]]$conditions 
4af0: 2b 3d 20 24 63 75 72 72 65 6e 74 5b 30 5d 0d 0a  += $current[0]..
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d                 .
4b20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
4b30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4b40: 20 20 20 20 20 69 66 28 24 4e 61 6d 65 29 20 7b       if($Name) {
4b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 57 72  ..            Wr
4b60: 69 74 65 2d 56 65 72 62 6f 73 65 20 22 4e 61 6d  ite-Verbose "Nam
4b70: 65 3a 20 24 4e 61 6d 65 22 0d 0a 20 20 20 20 20  e: $Name"..     
4b80: 20 20 20 20 20 20 20 69 66 28 24 4e 61 6d 65 20         if($Name 
4b90: 2d 6d 61 74 63 68 20 22 5c 3f 7c 5c 2a 7c 5c 5b  -match "\?|\*|\[
4ba0: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
4bb0: 20 20 20 20 20 5b 53 63 72 69 70 74 42 6c 6f 63       [ScriptBloc
4bc0: 6b 5b 5d 5d 24 66 69 6c 74 65 72 73 20 2b 3d 20  k[]]$filters += 
4bd0: 7b 20 24 28 66 6f 72 65 61 63 68 28 24 6e 20 69  { $(foreach($n i
4be0: 6e 20 24 4e 61 6d 65 29 7b 20 24 5f 2e 47 65 74  n $Name){ $_.Get
4bf0: 43 75 72 72 65 6e 74 50 72 6f 70 65 72 74 79 56  CurrentPropertyV
4c00: 61 6c 75 65 28 5b 53 79 73 74 65 6d 2e 57 69 6e  alue([System.Win
4c10: 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  dows.Automation.
4c20: 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e  AutomationElemen
4c30: 74 5d 3a 3a 4e 61 6d 65 50 72 6f 70 65 72 74 79  t]::NameProperty
4c40: 29 20 2d 6c 69 6b 65 20 24 6e 20 7d 29 20 2d 63  ) -like $n }) -c
4c50: 6f 6e 74 61 69 6e 73 20 24 74 72 75 65 20 7d 20  ontains $true } 
4c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
4c70: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
4c80: 20 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 57         [System.W
4c90: 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f  indows.Automatio
4ca0: 6e 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63  n.Condition[]]$c
4cb0: 75 72 72 65 6e 74 20 3d 20 24 28 0d 0a 20 20 20  urrent = $(..   
4cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
4cd0: 6f 72 65 61 63 68 28 24 6e 20 69 6e 20 24 4e 61  oreach($n in $Na
4ce0: 6d 65 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  me){..          
4cf0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 2d 6f             new-o
4d00: 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 57 69 6e  bject System.Win
4d10: 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  dows.Automation.
4d20: 50 72 6f 70 65 72 74 79 43 6f 6e 64 69 74 69 6f  PropertyConditio
4d30: 6e 20 28 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f  n ([System.Windo
4d40: 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 41 75  ws.Automation.Au
4d50: 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d  tomationElement]
4d60: 3a 3a 4e 61 6d 65 50 72 6f 70 65 72 74 79 29 2c  ::NameProperty),
4d70: 20 24 6e 2c 20 22 49 67 6e 6f 72 65 43 61 73 65   $n, "IgnoreCase
4d80: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "..             
4d90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4da0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4db0: 20 20 20 20 20 20 20 20 20 69 66 28 24 63 75 72           if($cur
4dc0: 72 65 6e 74 2e 4c 65 6e 67 74 68 20 2d 67 74 20  rent.Length -gt 
4dd0: 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  1) {..          
4de0: 20 20 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e          [System.
4df0: 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69  Windows.Automati
4e00: 6f 6e 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24  on.Condition[]]$
4e10: 63 6f 6e 64 69 74 69 6f 6e 73 20 2b 3d 20 4e 65  conditions += Ne
4e20: 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e  w-Object System.
4e30: 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69  Windows.Automati
4e40: 6f 6e 2e 4f 72 43 6f 6e 64 69 74 69 6f 6e 20 24  on.OrCondition $
4e50: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 20  current..       
4e60: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66          } elseif
4e70: 28 24 63 75 72 72 65 6e 74 2e 4c 65 6e 67 74 68  ($current.Length
4e80: 20 2d 65 71 20 31 29 20 7b 0d 0a 20 20 20 20 20   -eq 1) {..     
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 53 79               [Sy
4ea0: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74  stem.Windows.Aut
4eb0: 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69 6f  omation.Conditio
4ec0: 6e 5b 5d 5d 24 63 6f 6e 64 69 74 69 6f 6e 73 20  n[]]$conditions 
4ed0: 2b 3d 20 24 63 75 72 72 65 6e 74 5b 30 5d 0d 0a  += $current[0]..
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
4ef0: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
4f00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a   }..         }..
4f10: 20 20 20 20 20 20 20 20 20 69 66 28 24 43 6c 61           if($Cla
4f20: 73 73 4e 61 6d 65 29 20 7b 0d 0a 20 20 20 20 20  ssName) {..     
4f30: 20 20 20 20 20 20 20 69 66 28 24 43 6c 61 73 73         if($Class
4f40: 4e 61 6d 65 20 2d 6d 61 74 63 68 20 22 5c 3f 7c  Name -match "\?|
4f50: 5c 2a 7c 5c 5b 22 29 20 7b 0d 0a 20 20 20 20 20  \*|\[") {..     
4f60: 20 20 20 20 20 20 20 20 20 20 5b 53 63 72 69 70            [Scrip
4f70: 74 42 6c 6f 63 6b 5b 5d 5d 24 66 69 6c 74 65 72  tBlock[]]$filter
4f80: 73 20 2b 3d 20 7b 20 24 28 66 6f 72 65 61 63 68  s += { $(foreach
4f90: 28 24 63 20 69 6e 20 24 43 6c 61 73 73 4e 61 6d  ($c in $ClassNam
4fa0: 65 29 7b 20 24 5f 2e 47 65 74 43 75 72 72 65 6e  e){ $_.GetCurren
4fb0: 74 50 72 6f 70 65 72 74 79 56 61 6c 75 65 28 5b  tPropertyValue([
4fc0: 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41  System.Windows.A
4fd0: 75 74 6f 6d 61 74 69 6f 6e 2e 41 75 74 6f 6d 61  utomation.Automa
4fe0: 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d 3a 3a 43 6c  tionElement]::Cl
4ff0: 61 73 73 4e 61 6d 65 50 72 6f 70 65 72 74 79 29  assNameProperty)
5000: 20 2d 6c 69 6b 65 20 24 63 20 7d 29 20 2d 63 6f   -like $c }) -co
5010: 6e 74 61 69 6e 73 20 24 74 72 75 65 20 7d 20 0d  ntains $true } .
5020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  .            } e
5030: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
5040: 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 57 69        [System.Wi
5050: 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e  ndows.Automation
5060: 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63 75  .Condition[]]$cu
5070: 72 72 65 6e 74 20 3d 20 24 28 0d 0a 20 20 20 20  rrent = $(..    
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
5090: 72 65 61 63 68 28 24 63 20 69 6e 20 24 43 6c 61  reach($c in $Cla
50a0: 73 73 4e 61 6d 65 29 7b 0d 0a 20 20 20 20 20 20  ssName){..      
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
50c0: 65 77 2d 6f 62 6a 65 63 74 20 53 79 73 74 65 6d  ew-object System
50d0: 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74  .Windows.Automat
50e0: 69 6f 6e 2e 50 72 6f 70 65 72 74 79 43 6f 6e 64  ion.PropertyCond
50f0: 69 74 69 6f 6e 20 28 5b 53 79 73 74 65 6d 2e 57  ition ([System.W
5100: 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f  indows.Automatio
5110: 6e 2e 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d  n.AutomationElem
5120: 65 6e 74 5d 3a 3a 43 6c 61 73 73 4e 61 6d 65 50  ent]::ClassNameP
5130: 72 6f 70 65 72 74 79 29 2c 20 24 63 2c 20 22 49  roperty), $c, "I
5140: 67 6e 6f 72 65 43 61 73 65 22 0d 0a 20 20 20 20  gnoreCase"..    
5150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
5160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5170: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
5180: 20 20 69 66 28 24 63 75 72 72 65 6e 74 2e 4c 65    if($current.Le
5190: 6e 67 74 68 20 2d 67 74 20 31 29 20 7b 0d 0a 20  ngth -gt 1) {.. 
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 20 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73   [System.Windows
51c0: 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64  .Automation.Cond
51d0: 69 74 69 6f 6e 5b 5d 5d 24 63 6f 6e 64 69 74 69  ition[]]$conditi
51e0: 6f 6e 73 20 2b 3d 20 4e 65 77 2d 4f 62 6a 65 63  ons += New-Objec
51f0: 74 20 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73  t System.Windows
5200: 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 4f 72 43 6f  .Automation.OrCo
5210: 6e 64 69 74 69 6f 6e 20 24 63 75 72 72 65 6e 74  ndition $current
5220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5230: 20 7d 20 65 6c 73 65 69 66 28 24 63 75 72 72 65   } elseif($curre
5240: 6e 74 2e 4c 65 6e 67 74 68 20 2d 65 71 20 31 29  nt.Length -eq 1)
5250: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5260: 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 57 69        [System.Wi
5270: 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e  ndows.Automation
5280: 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63 6f  .Condition[]]$co
5290: 6e 64 69 74 69 6f 6e 73 20 2b 3d 20 24 63 75 72  nditions += $cur
52a0: 72 65 6e 74 5b 30 5d 0d 0a 20 20 20 20 20 20 20  rent[0]..       
52b0: 20 20 20 20 20 20 20 20 7d 20 20 20 20 20 20 20          }       
52c0: 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20             ..   
52d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
52e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
52f0: 20 69 66 28 24 43 6f 6e 74 72 6f 6c 54 79 70 65   if($ControlType
5300: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
5310: 20 69 66 28 24 43 6f 6e 74 72 6f 6c 54 79 70 65   if($ControlType
5320: 20 2d 6d 61 74 63 68 20 22 5c 3f 7c 5c 2a 7c 5c   -match "\?|\*|\
5330: 5b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  [") {..         
5340: 20 20 20 20 20 20 5b 53 63 72 69 70 74 42 6c 6f        [ScriptBlo
5350: 63 6b 5b 5d 5d 24 66 69 6c 74 65 72 73 20 2b 3d  ck[]]$filters +=
5360: 20 7b 20 24 28 66 6f 72 65 61 63 68 28 24 63 20   { $(foreach($c 
5370: 69 6e 20 24 43 6f 6e 74 72 6f 6c 54 79 70 65 29  in $ControlType)
5380: 7b 20 24 5f 2e 47 65 74 43 75 72 72 65 6e 74 50  { $_.GetCurrentP
5390: 72 6f 70 65 72 74 79 56 61 6c 75 65 28 5b 53 79  ropertyValue([Sy
53a0: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74  stem.Windows.Aut
53b0: 6f 6d 61 74 69 6f 6e 2e 41 75 74 6f 6d 61 74 69  omation.Automati
53c0: 6f 6e 45 6c 65 6d 65 6e 74 5d 3a 3a 43 6f 6e 74  onElement]::Cont
53d0: 72 6f 6c 54 79 70 65 50 72 6f 70 65 72 74 79 29  rolTypeProperty)
53e0: 20 2d 6c 69 6b 65 20 24 63 20 7d 29 20 2d 63 6f   -like $c }) -co
53f0: 6e 74 61 69 6e 73 20 24 74 72 75 65 20 7d 20 0d  ntains $true } .
5400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  .            } e
5410: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
5420: 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 57 69        [System.Wi
5430: 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e  ndows.Automation
5440: 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63 75  .Condition[]]$cu
5450: 72 72 65 6e 74 20 3d 20 24 28 0d 0a 20 20 20 20  rrent = $(..    
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
5470: 72 65 61 63 68 28 24 63 20 69 6e 20 24 43 6f 6e  reach($c in $Con
5480: 74 72 6f 6c 54 79 70 65 29 7b 0d 0a 20 20 20 20  trolType){..    
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54a0: 20 6e 65 77 2d 6f 62 6a 65 63 74 20 53 79 73 74   new-object Syst
54b0: 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d  em.Windows.Autom
54c0: 61 74 69 6f 6e 2e 50 72 6f 70 65 72 74 79 43 6f  ation.PropertyCo
54d0: 6e 64 69 74 69 6f 6e 20 28 5b 53 79 73 74 65 6d  ndition ([System
54e0: 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74  .Windows.Automat
54f0: 69 6f 6e 2e 41 75 74 6f 6d 61 74 69 6f 6e 45 6c  ion.AutomationEl
5500: 65 6d 65 6e 74 5d 3a 3a 43 6f 6e 74 72 6f 6c 54  ement]::ControlT
5510: 79 70 65 50 72 6f 70 65 72 74 79 29 2c 20 24 63  ypeProperty), $c
5520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5530: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5540: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
5550: 20 20 20 20 20 20 20 20 69 66 28 24 63 75 72 72          if($curr
5560: 65 6e 74 2e 4c 65 6e 67 74 68 20 2d 67 74 20 31  ent.Length -gt 1
5570: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
5580: 20 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 57         [System.W
5590: 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f  indows.Automatio
55a0: 6e 2e 43 6f 6e 64 69 74 69 6f 6e 5b 5d 5d 24 63  n.Condition[]]$c
55b0: 6f 6e 64 69 74 69 6f 6e 73 20 2b 3d 20 4e 65 77  onditions += New
55c0: 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 57  -Object System.W
55d0: 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f  indows.Automatio
55e0: 6e 2e 4f 72 43 6f 6e 64 69 74 69 6f 6e 20 24 63  n.OrCondition $c
55f0: 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  urrent..        
5600: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 28         } elseif(
5610: 24 63 75 72 72 65 6e 74 2e 4c 65 6e 67 74 68 20  $current.Length 
5620: 2d 65 71 20 31 29 20 7b 0d 0a 20 20 20 20 20 20  -eq 1) {..      
5630: 20 20 20 20 20 20 20 20 20 20 20 20 5b 53 79 73              [Sys
5640: 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f  tem.Windows.Auto
5650: 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69 6f 6e  mation.Condition
5660: 5b 5d 5d 24 63 6f 6e 64 69 74 69 6f 6e 73 20 2b  []]$conditions +
5670: 3d 20 24 63 75 72 72 65 6e 74 5b 30 5d 0d 0a 20  = $current[0].. 
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56a0: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d   ..            }
56b0: 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ..         }..  
56c0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
56d0: 20 20 69 66 28 24 63 6f 6e 64 69 74 69 6f 6e 73    if($conditions
56e0: 2e 4c 65 6e 67 74 68 20 2d 67 74 20 31 29 20 7b  .Length -gt 1) {
56f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 53  ..            [S
5700: 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75  ystem.Windows.Au
5710: 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69  tomation.Conditi
5720: 6f 6e 5d 24 63 6f 6e 64 69 74 69 6f 6e 20 3d 20  on]$condition = 
5730: 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65  New-Object Syste
5740: 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61  m.Windows.Automa
5750: 74 69 6f 6e 2e 41 6e 64 43 6f 6e 64 69 74 69 6f  tion.AndConditio
5760: 6e 20 24 63 6f 6e 64 69 74 69 6f 6e 73 0d 0a 20  n $conditions.. 
5770: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66          } elseif
5780: 28 24 63 6f 6e 64 69 74 69 6f 6e 73 29 20 7b 0d  ($conditions) {.
5790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 53 79  .            [Sy
57a0: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74  stem.Windows.Aut
57b0: 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69 6f  omation.Conditio
57c0: 6e 5d 24 63 6f 6e 64 69 74 69 6f 6e 20 3d 20 24  n]$condition = $
57d0: 63 6f 6e 64 69 74 69 6f 6e 73 5b 30 5d 0d 0a 20  conditions[0].. 
57e0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
57f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 53  ..            [S
5800: 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75  ystem.Windows.Au
5810: 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69 74 69  tomation.Conditi
5820: 6f 6e 5d 24 63 6f 6e 64 69 74 69 6f 6e 20 3d 20  on]$condition = 
5830: 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e  [System.Windows.
5840: 41 75 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6e 64 69  Automation.Condi
5850: 74 69 6f 6e 5d 3a 3a 54 72 75 65 43 6f 6e 64 69  tion]::TrueCondi
5860: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 7d  tion..         }
5870: 0d 0a 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ..         ..   
5880: 20 20 20 20 20 20 49 66 28 24 56 65 72 62 6f 73        If($Verbos
5890: 65 50 72 65 66 65 72 65 6e 63 65 20 2d 67 74 20  ePreference -gt 
58a0: 22 53 69 6c 65 6e 74 6c 79 43 6f 6e 74 69 6e 75  "SilentlyContinu
58b0: 65 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  e") {..         
58c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75  ..            fu
58d0: 6e 63 74 69 6f 6e 20 57 72 69 74 65 2d 43 6f 6e  nction Write-Con
58e0: 64 69 74 69 6f 6e 20 7b 0d 0a 20 20 20 20 20 20  dition {..      
58f0: 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 28 5b           param([
5900: 50 61 72 61 6d 65 74 65 72 28 56 61 6c 75 65 46  Parameter(ValueF
5910: 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74 72 75  romPipeline=$tru
5920: 65 29 5d 24 63 6f 6e 64 69 74 69 6f 6e 2c 20 24  e)]$condition, $
5930: 69 6e 64 65 6e 74 20 3d 20 30 29 0d 0a 20 20 20  indent = 0)..   
5940: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
5950: 65 73 73 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ess {..         
5960: 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d 44           Write-D
5970: 65 62 75 67 20 28 24 43 6f 6e 64 69 74 69 6f 6e  ebug ($Condition
5980: 20 7c 20 66 6c 20 2a 20 20 7c 20 4f 75 74 2d 53   | fl *  | Out-S
5990: 74 72 69 6e 67 29 20 20 20 20 20 20 20 20 20 20  tring)          
59a0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
59b0: 20 20 20 20 20 20 20 20 20 69 66 28 24 63 6f 6e           if($con
59c0: 64 69 74 69 6f 6e 20 2d 69 73 20 5b 53 79 73 74  dition -is [Syst
59d0: 65 6d 2e 57 69 6e 64 6f 77 73 2e 41 75 74 6f 6d  em.Windows.Autom
59e0: 61 74 69 6f 6e 2e 41 6e 64 43 6f 6e 64 69 74 69  ation.AndConditi
59f0: 6f 6e 5d 20 2d 6f 72 20 24 63 6f 6e 64 69 74 69  on] -or $conditi
5a00: 6f 6e 20 2d 69 73 20 5b 53 79 73 74 65 6d 2e 57  on -is [System.W
5a10: 69 6e 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f  indows.Automatio
5a20: 6e 2e 4f 72 43 6f 6e 64 69 74 69 6f 6e 5d 29 20  n.OrCondition]) 
5a30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5a40: 20 20 20 20 20 20 20 20 57 72 69 74 65 2d 56 65          Write-Ve
5a50: 72 62 6f 73 65 20 28 28 22 20 22 2a 24 69 6e 64  rbose ((" "*$ind
5a60: 65 6e 74 29 20 2b 20 24 43 6f 6e 64 69 74 69 6f  ent) + $Conditio
5a70: 6e 2e 47 65 74 54 79 70 65 28 29 2e 4e 61 6d 65  n.GetType().Name
5a80: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
5a90: 20 20 20 20 20 20 20 20 20 24 63 6f 6e 64 69 74           $condit
5aa0: 69 6f 6e 2e 47 65 74 43 6f 6e 64 69 74 69 6f 6e  ion.GetCondition
5ab0: 73 28 29 2e 47 65 74 45 6e 75 6d 65 72 61 74 6f  s().GetEnumerato
5ac0: 72 28 29 20 7c 20 57 72 69 74 65 2d 43 6f 6e 64  r() | Write-Cond
5ad0: 69 74 69 6f 6e 20 2d 49 6e 64 65 6e 74 20 28 24  ition -Indent ($
5ae0: 49 6e 64 65 6e 74 2b 34 29 0d 0a 20 20 20 20 20  Indent+4)..     
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
5b00: 6c 73 65 69 66 28 24 63 6f 6e 64 69 74 69 6f 6e  lseif($condition
5b10: 20 2d 69 73 20 5b 53 79 73 74 65 6d 2e 57 69 6e   -is [System.Win
5b20: 64 6f 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  dows.Automation.
5b30: 50 72 6f 70 65 72 74 79 43 6f 6e 64 69 74 69 6f  PropertyConditio
5b40: 6e 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  n]) {..         
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 57 72 69 74              Writ
5b60: 65 2d 56 65 72 62 6f 73 65 20 28 28 22 20 22 2a  e-Verbose ((" "*
5b70: 24 69 6e 64 65 6e 74 29 20 2b 20 24 43 6f 6e 64  $indent) + $Cond
5b80: 69 74 69 6f 6e 2e 50 72 6f 70 65 72 74 79 2e 50  ition.Property.P
5b90: 72 6f 67 72 61 6d 6d 61 74 69 63 4e 61 6d 65 20  rogrammaticName 
5ba0: 2b 20 22 20 3d 20 27 22 20 2b 20 24 43 6f 6e 64  + " = '" + $Cond
5bb0: 69 74 69 6f 6e 2e 56 61 6c 75 65 20 2b 20 22 27  ition.Value + "'
5bc0: 20 28 22 20 2b 20 24 43 6f 6e 64 69 74 69 6f 6e   (" + $Condition
5bd0: 2e 46 6c 61 67 73 20 2b 20 22 29 22 29 0d 0a 20  .Flags + ")").. 
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bf0: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
5c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c10: 57 72 69 74 65 2d 56 65 72 62 6f 73 65 20 28 28  Write-Verbose ((
5c20: 22 20 22 2a 24 69 6e 64 65 6e 74 29 20 2b 20 24  " "*$indent) + $
5c30: 43 6f 6e 64 69 74 69 6f 6e 2e 47 65 74 54 79 70  Condition.GetTyp
5c40: 65 28 29 2e 4e 61 6d 65 20 2b 20 22 20 77 68 65  e().Name + " whe
5c50: 72 65 20 27 22 20 2b 20 24 43 6f 6e 64 69 74 69  re '" + $Conditi
5c60: 6f 6e 2e 56 61 6c 75 65 20 2b 20 22 27 20 28 22  on.Value + "' ("
5c70: 20 2b 20 24 43 6f 6e 64 69 74 69 6f 6e 2e 46 6c   + $Condition.Fl
5c80: 61 67 73 20 2b 20 22 29 22 29 0d 0a 20 20 20 20  ags + ")")..    
5c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
5ca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5cb0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
5cc0: 0d 0a 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ..         ..   
5cd0: 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d 56           Write-V
5ce0: 65 72 62 6f 73 65 20 22 43 4f 4e 44 49 54 49 4f  erbose "CONDITIO
5cf0: 4e 53 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  NS =============
5d00: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24  "..            $
5d10: 67 6c 6f 62 61 6c 3a 4c 61 73 74 43 6f 6e 64 69  global:LastCondi
5d20: 74 69 6f 6e 20 3d 20 24 63 6f 6e 64 69 74 69 6f  tion = $conditio
5d30: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  n..            f
5d40: 6f 72 65 61 63 68 28 24 63 20 69 6e 20 24 63 6f  oreach($c in $co
5d50: 6e 64 69 74 69 6f 6e 29 20 7b 20 20 20 20 20 20  ndition) {      
5d60: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
5d70: 20 20 20 20 20 20 20 57 72 69 74 65 2d 43 6f 6e         Write-Con
5d80: 64 69 74 69 6f 6e 20 24 63 0d 0a 20 20 20 20 20  dition $c..     
5d90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5da0: 20 20 20 20 20 20 57 72 69 74 65 2d 56 65 72 62        Write-Verb
5db0: 6f 73 65 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ose "===========
5dc0: 3d 3d 20 43 4f 4e 44 49 54 49 4f 4e 53 22 0d 0a  == CONDITIONS"..
5dd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5de0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
5df0: 69 66 28 24 66 69 6c 74 65 72 73 2e 43 6f 75 6e  if($filters.Coun
5e00: 74 20 2d 67 74 20 30 29 20 7b 0d 0a 20 20 20 20  t -gt 0) {..    
5e10: 20 20 20 20 20 20 20 20 24 45 6c 65 6d 65 6e 74          $Element
5e20: 20 3d 20 24 50 61 72 65 6e 74 2e 46 69 6e 64 41   = $Parent.FindA
5e30: 6c 6c 28 20 24 73 65 61 72 63 68 2c 20 24 63 6f  ll( $search, $co
5e40: 6e 64 69 74 69 6f 6e 20 29 20 7c 20 57 68 65 72  ndition ) | Wher
5e50: 65 2d 4f 62 6a 65 63 74 20 7b 20 24 69 74 65 6d  e-Object { $item
5e60: 20 3d 20 24 5f 3b 20 20 66 6f 72 65 61 63 68 28   = $_;  foreach(
5e70: 24 66 20 69 6e 20 24 66 69 6c 74 65 72 73 29 20  $f in $filters) 
5e80: 7b 20 24 69 74 65 6d 20 3d 20 24 69 74 65 6d 20  { $item = $item 
5e90: 7c 20 57 68 65 72 65 20 24 66 20 7d 3b 20 24 69  | Where $f }; $i
5ea0: 74 65 6d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  tem }..         
5eb0: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
5ec0: 20 20 20 20 20 20 24 45 6c 65 6d 65 6e 74 20 3d        $Element =
5ed0: 20 24 50 61 72 65 6e 74 2e 46 69 6e 64 41 6c 6c   $Parent.FindAll
5ee0: 28 20 24 73 65 61 72 63 68 2c 20 24 63 6f 6e 64  ( $search, $cond
5ef0: 69 74 69 6f 6e 20 29 0d 0a 20 20 20 20 20 20 20  ition )..       
5f00: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 20 20 0d 0a    }..      }  ..
5f10: 20 20 20 7d 0d 0a 20 20 20 0d 0a 20 20 20 57 72     }..   ..   Wr
5f20: 69 74 65 2d 56 65 72 62 6f 73 65 20 22 45 6c 65  ite-Verbose "Ele
5f30: 6d 65 6e 74 20 43 6f 75 6e 74 3a 20 24 28 40 28  ment Count: $(@(
5f40: 24 45 6c 65 6d 65 6e 74 29 2e 43 6f 75 6e 74 29  $Element).Count)
5f50: 22 0d 0a 20 20 20 69 66 28 24 45 6c 65 6d 65 6e  "..   if($Elemen
5f60: 74 29 20 7b 0d 0a 20 20 20 20 20 20 66 6f 72 65  t) {..      fore
5f70: 61 63 68 28 24 65 6c 20 69 6e 20 24 45 6c 65 6d  ach($el in $Elem
5f80: 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ent) {..        
5f90: 20 69 66 28 24 42 61 72 65 29 20 7b 0d 0a 20 20   if($Bare) {..  
5fa0: 20 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d            Write-
5fb0: 4f 75 74 70 75 74 20 24 65 6c 0d 0a 20 20 20 20  Output $el..    
5fc0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
5fd0: 20 20 20 20 20 20 20 20 20 20 20 24 65 20 3d 20             $e = 
5fe0: 4e 65 77 2d 4f 62 6a 65 63 74 20 50 53 4f 62 6a  New-Object PSObj
5ff0: 65 63 74 20 24 65 6c 0d 0a 20 20 20 20 20 20 20  ect $el..       
6000: 20 20 20 20 20 66 6f 72 65 61 63 68 28 24 70 72       foreach($pr
6010: 6f 70 20 69 6e 20 24 65 2e 47 65 74 53 75 70 70  op in $e.GetSupp
6020: 6f 72 74 65 64 50 72 6f 70 65 72 74 69 65 73 28  ortedProperties(
6030: 29 20 7c 20 53 6f 72 74 20 50 72 6f 67 72 61 6d  ) | Sort Program
6040: 6d 61 74 69 63 4e 61 6d 65 29 0d 0a 20 20 20 20  maticName)..    
6050: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6060: 20 20 20 20 20 20 20 20 20 20 23 23 20 54 4f 44            ## TOD
6070: 4f 3a 20 6d 61 6b 65 20 73 75 72 65 20 61 6c 6c  O: make sure all
6080: 20 74 68 65 73 65 20 73 68 6f 77 20 75 70 3a 20   these show up: 
6090: 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e  [System.Windows.
60a0: 41 75 74 6f 6d 61 74 69 6f 6e 2e 41 75 74 6f 6d  Automation.Autom
60b0: 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 5d 20 7c 20  ationElement] | 
60c0: 67 6d 20 2d 73 74 61 20 2d 74 79 70 65 20 50 72  gm -sta -type Pr
60d0: 6f 70 65 72 74 79 0d 0a 20 20 20 20 20 20 20 20  operty..        
60e0: 20 20 20 20 20 20 20 24 70 72 6f 70 4e 61 6d 65         $propName
60f0: 20 3d 20 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f   = [System.Windo
6100: 77 73 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 41 75  ws.Automation.Au
6110: 74 6f 6d 61 74 69 6f 6e 5d 3a 3a 50 72 6f 70 65  tomation]::Prope
6120: 72 74 79 4e 61 6d 65 28 24 70 72 6f 70 29 0d 0a  rtyName($prop)..
6130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
6140: 64 64 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74  dd-Member -Input
6150: 4f 62 6a 65 63 74 20 24 65 20 2d 54 79 70 65 20  Object $e -Type 
6160: 53 63 72 69 70 74 50 72 6f 70 65 72 74 79 20 2d  ScriptProperty -
6170: 4e 61 6d 65 20 24 70 72 6f 70 4e 61 6d 65 20 2d  Name $propName -
6180: 56 61 6c 75 65 20 28 5b 53 63 72 69 70 74 42 6c  Value ([ScriptBl
6190: 6f 63 6b 5d 3a 3a 43 72 65 61 74 65 28 20 22 60  ock]::Create( "`
61a0: 24 74 68 69 73 2e 47 65 74 43 75 72 72 65 6e 74  $this.GetCurrent
61b0: 50 72 6f 70 65 72 74 79 56 61 6c 75 65 28 20 5b  PropertyValue( [
61c0: 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 41  System.Windows.A
61d0: 75 74 6f 6d 61 74 69 6f 6e 2e 41 75 74 6f 6d 61  utomation.Automa
61e0: 74 69 6f 6e 50 72 6f 70 65 72 74 79 5d 3a 3a 4c  tionProperty]::L
61f0: 6f 6f 6b 75 70 42 79 49 64 28 20 24 28 24 70 72  ookupById( $($pr
6200: 6f 70 2e 49 64 29 20 29 29 22 20 29 29 20 2d 45  op.Id) ))" )) -E
6210: 41 20 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20  A 0..           
6220: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6230: 66 6f 72 65 61 63 68 28 24 70 61 74 74 20 69 6e  foreach($patt in
6240: 20 24 65 2e 47 65 74 53 75 70 70 6f 72 74 65 64   $e.GetSupported
6250: 50 61 74 74 65 72 6e 73 28 29 7c 20 53 6f 72 74  Patterns()| Sort
6260: 20 50 72 6f 67 72 61 6d 6d 61 74 69 63 4e 61 6d   ProgrammaticNam
6270: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
6280: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6290: 20 20 41 64 64 2d 4d 65 6d 62 65 72 20 2d 49 6e    Add-Member -In
62a0: 70 75 74 4f 62 6a 65 63 74 20 24 65 20 2d 54 79  putObject $e -Ty
62b0: 70 65 20 53 63 72 69 70 74 50 72 6f 70 65 72 74  pe ScriptPropert
62c0: 79 20 2d 4e 61 6d 65 20 28 24 70 61 74 74 2e 50  y -Name ($patt.P
62d0: 72 6f 67 72 61 6d 6d 61 74 69 63 4e 61 6d 65 2e  rogrammaticName.
62e0: 52 65 70 6c 61 63 65 28 22 50 61 74 74 65 72 6e  Replace("Pattern
62f0: 49 64 65 6e 74 69 66 69 65 72 73 2e 50 61 74 74  Identifiers.Patt
6300: 65 72 6e 22 2c 22 22 29 20 2b 20 22 50 61 74 74  ern","") + "Patt
6310: 65 72 6e 22 29 20 2d 56 61 6c 75 65 20 28 5b 53  ern") -Value ([S
6320: 63 72 69 70 74 42 6c 6f 63 6b 5d 3a 3a 43 72 65  criptBlock]::Cre
6330: 61 74 65 28 20 22 60 24 74 68 69 73 2e 47 65 74  ate( "`$this.Get
6340: 43 75 72 72 65 6e 74 50 61 74 74 65 72 6e 28 20  CurrentPattern( 
6350: 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e  [System.Windows.
6360: 41 75 74 6f 6d 61 74 69 6f 6e 2e 41 75 74 6f 6d  Automation.Autom
6370: 61 74 69 6f 6e 50 61 74 74 65 72 6e 5d 3a 3a 4c  ationPattern]::L
6380: 6f 6f 6b 75 70 42 79 49 64 28 20 27 24 28 24 70  ookupById( '$($p
6390: 61 74 74 2e 49 64 29 27 20 29 20 29 22 20 29 29  att.Id)' ) )" ))
63a0: 20 2d 45 41 20 30 0d 0a 20 20 20 20 20 20 20 20   -EA 0..        
63b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
63c0: 20 20 20 57 72 69 74 65 2d 4f 75 74 70 75 74 20     Write-Output 
63d0: 24 65 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a  $e..         }..
63e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 7d 0d 0a 7d        }..   }..}
63f0: 0d 0a 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d 0a 23 20 20  ....}........#  
6400: 20 5b 43 6d 64 6c 65 74 28 56 65 72 62 73 43 6f   [Cmdlet(VerbsCo
6410: 6d 6d 6f 6e 2e 41 64 64 2c 20 22 55 49 41 48 61  mmon.Add, "UIAHa
6420: 6e 64 6c 65 72 22 29 5d 0d 0a 23 20 20 20 70 75  ndler")]..#   pu
6430: 62 6c 69 63 20 63 6c 61 73 73 20 41 64 64 55 49  blic class AddUI
6440: 41 48 61 6e 64 6c 65 72 43 6f 6d 6d 61 6e 64 20  AHandlerCommand 
6450: 3a 20 50 53 43 6d 64 6c 65 74 0d 0a 23 20 20 20  : PSCmdlet..#   
6460: 7b 0d 0a 23 20 20 20 20 20 20 70 72 69 76 61 74  {..#      privat
6470: 65 20 41 75 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d  e AutomationElem
6480: 65 6e 74 20 5f 70 61 72 65 6e 74 20 3d 20 41 75  ent _parent = Au
6490: 74 6f 6d 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 2e  tomationElement.
64a0: 52 6f 6f 74 45 6c 65 6d 65 6e 74 3b 0d 0a 23 20  RootElement;..# 
64b0: 20 20 20 20 20 70 72 69 76 61 74 65 20 41 75 74       private Aut
64c0: 6f 6d 61 74 69 6f 6e 45 76 65 6e 74 20 5f 65 76  omationEvent _ev
64d0: 65 6e 74 20 3d 20 57 69 6e 64 6f 77 50 61 74 74  ent = WindowPatt
64e0: 65 72 6e 2e 57 69 6e 64 6f 77 4f 70 65 6e 65 64  ern.WindowOpened
64f0: 45 76 65 6e 74 3b 0d 0a 23 20 20 20 20 20 20 70  Event;..#      p
6500: 72 69 76 61 74 65 20 54 72 65 65 53 63 6f 70 65  rivate TreeScope
6510: 20 5f 73 63 6f 70 65 20 3d 20 54 72 65 65 53 63   _scope = TreeSc
6520: 6f 70 65 2e 43 68 69 6c 64 72 65 6e 3b 0d 0a 23  ope.Children;..#
6530: 0d 0a 23 20 20 20 20 20 20 5b 50 61 72 61 6d 65  ..#      [Parame
6540: 74 65 72 28 56 61 6c 75 65 46 72 6f 6d 50 69 70  ter(ValueFromPip
6550: 65 6c 69 6e 65 20 3d 20 74 72 75 65 29 5d 0d 0a  eline = true)]..
6560: 23 20 20 20 20 20 20 5b 41 6c 69 61 73 28 22 50  #      [Alias("P
6570: 61 72 65 6e 74 22 2c 20 22 45 6c 65 6d 65 6e 74  arent", "Element
6580: 22 2c 20 22 52 6f 6f 74 22 29 5d 0d 0a 23 20 20  ", "Root")]..#  
6590: 20 20 20 20 70 75 62 6c 69 63 20 41 75 74 6f 6d      public Autom
65a0: 61 74 69 6f 6e 45 6c 65 6d 65 6e 74 20 49 6e 70  ationElement Inp
65b0: 75 74 4f 62 6a 65 63 74 20 7b 20 73 65 74 20 7b  utObject { set {
65c0: 20 5f 70 61 72 65 6e 74 20 3d 20 76 61 6c 75 65   _parent = value
65d0: 3b 20 7d 20 67 65 74 20 7b 20 72 65 74 75 72 6e  ; } get { return
65e0: 20 5f 70 61 72 65 6e 74 3b 20 7d 20 7d 0d 0a 23   _parent; } }..#
65f0: 0d 0a 23 20 20 20 20 20 20 5b 50 61 72 61 6d 65  ..#      [Parame
6600: 74 65 72 28 29 5d 0d 0a 23 20 20 20 20 20 20 70  ter()]..#      p
6610: 75 62 6c 69 63 20 41 75 74 6f 6d 61 74 69 6f 6e  ublic Automation
6620: 45 76 65 6e 74 20 45 76 65 6e 74 20 7b 20 73 65  Event Event { se
6630: 74 20 7b 20 5f 65 76 65 6e 74 20 3d 20 76 61 6c  t { _event = val
6640: 75 65 3b 20 7d 20 67 65 74 20 7b 20 72 65 74 75  ue; } get { retu
6650: 72 6e 20 5f 65 76 65 6e 74 3b 20 7d 20 7d 0d 0a  rn _event; } }..
6660: 23 0d 0a 23 20 20 20 20 20 20 5b 50 61 72 61 6d  #..#      [Param
6670: 65 74 65 72 28 29 5d 0d 0a 23 20 20 20 20 20 20  eter()]..#      
6680: 70 75 62 6c 69 63 20 41 75 74 6f 6d 61 74 69 6f  public Automatio
6690: 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72 20 53 63  nEventHandler Sc
66a0: 72 69 70 74 42 6c 6f 63 6b 20 7b 20 73 65 74 3b  riptBlock { set;
66b0: 20 67 65 74 3b 20 7d 0d 0a 23 0d 0a 23 20 20 20   get; }..#..#   
66c0: 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 29 5d     [Parameter()]
66d0: 0d 0a 23 20 20 20 20 20 20 70 75 62 6c 69 63 20  ..#      public 
66e0: 53 77 69 74 63 68 50 61 72 61 6d 65 74 65 72 20  SwitchParameter 
66f0: 50 61 73 73 74 68 72 75 20 7b 20 73 65 74 3b 20  Passthru { set; 
6700: 67 65 74 3b 20 7d 0d 0a 23 0d 0a 23 20 20 20 20  get; }..#..#    
6710: 20 20 5b 50 61 72 61 6d 65 74 65 72 28 29 5d 0d    [Parameter()].
6720: 0a 23 20 20 20 20 20 20 70 75 62 6c 69 63 20 54  .#      public T
6730: 72 65 65 53 63 6f 70 65 20 53 63 6f 70 65 20 7b  reeScope Scope {
6740: 20 73 65 74 20 7b 20 5f 73 63 6f 70 65 20 3d 20   set { _scope = 
6750: 76 61 6c 75 65 3b 20 7d 20 67 65 74 20 7b 20 72  value; } get { r
6760: 65 74 75 72 6e 20 5f 73 63 6f 70 65 3b 20 7d 20  eturn _scope; } 
6770: 7d 0d 0a 23 0d 0a 23 20 20 20 20 20 20 70 72 6f  }..#..#      pro
6780: 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
6790: 76 6f 69 64 20 50 72 6f 63 65 73 73 52 65 63 6f  void ProcessReco
67a0: 72 64 28 29 0d 0a 23 20 20 20 20 20 20 7b 0d 0a  rd()..#      {..
67b0: 23 20 20 20 20 20 20 20 20 20 41 75 74 6f 6d 61  #         Automa
67c0: 74 69 6f 6e 2e 41 64 64 41 75 74 6f 6d 61 74 69  tion.AddAutomati
67d0: 6f 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72 28 45  onEventHandler(E
67e0: 76 65 6e 74 2c 20 49 6e 70 75 74 4f 62 6a 65 63  vent, InputObjec
67f0: 74 2c 20 53 63 6f 70 65 2c 20 53 63 72 69 70 74  t, Scope, Script
6800: 42 6c 6f 63 6b 29 3b 0d 0a 23 0d 0a 23 20 20 20  Block);..#..#   
6810: 20 20 20 20 20 20 69 66 20 28 50 61 73 73 74 68        if (Passth
6820: 72 75 2e 54 6f 42 6f 6f 6c 28 29 29 0d 0a 23 20  ru.ToBool())..# 
6830: 20 20 20 20 20 20 20 20 7b 0d 0a 23 20 20 20 20          {..#    
6840: 20 20 20 20 20 20 20 20 57 72 69 74 65 4f 62 6a          WriteObj
6850: 65 63 74 28 49 6e 70 75 74 4f 62 6a 65 63 74 29  ect(InputObject)
6860: 3b 0d 0a 23 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..#         }..
6870: 23 0d 0a 23 20 20 20 20 20 20 20 20 20 62 61 73  #..#         bas
6880: 65 2e 50 72 6f 63 65 73 73 52 65 63 6f 72 64 28  e.ProcessRecord(
6890: 29 3b 0d 0a 23 20 20 20 20 20 20 7d 0d 0a 23 20  );..#      }..# 
68a0: 20 20 7d 0d 0a 0d 0a 45 78 70 6f 72 74 2d 4d 6f    }....Export-Mo
68b0: 64 75 6c 65 4d 65 6d 62 65 72 20 2d 63 6d 64 6c  duleMember -cmdl
68c0: 65 74 20 2a 20 2d 46 75 6e 63 74 69 6f 6e 20 2a  et * -Function *
68d0: 20 2d 41 6c 69 61 73 20 2a 0d 0a                  -Alias *..