├── .gitignore
├── BuildUIACoreInterop.bat
├── CustomizeUiaInterop
├── CustomizeUiaInterop.csproj
├── Program.cs
├── Properties
│ └── AssemblyInfo.cs
└── app.config
├── GitVersion.yml
├── LICENSE
├── ManagedUiaCustomizationCore
├── AttributeDrivenPatternHelpers
│ ├── AttributeDrivenPatternHandler.cs
│ ├── PatternClientInstanceInterceptor.cs
│ ├── PatternGuidAttribute.cs
│ ├── PatternMethodAttribute.cs
│ ├── PatternPropertyAttribute.cs
│ ├── ProviderPatternMatcher.cs
│ ├── ReflectionUtils.cs
│ ├── StandalonePropertyAttribute.cs
│ ├── TypeMember.cs
│ └── UiaTypesHelper.cs
├── AttributeDrivenPatternSchema.cs
├── AutomationPeerAugmentationHelper.cs
├── CustomPatternBase.cs
├── IStandalonePropertyProvider.cs
├── ManagedUiaCustomizationCore.csproj
├── NativeMethods.cs
├── Properties
│ └── AssemblyInfo.cs
├── Schema
│ ├── CustomClientInstanceBase.cs
│ ├── CustomPatternSchemaBase.cs
│ ├── ISchemaMember.cs
│ ├── UiaEventInfoHelper.cs
│ ├── UiaMethodInfoHelper.cs
│ ├── UiaParameterDescription.cs
│ ├── UiaParameterHelper.cs
│ ├── UiaParameterListHelper.cs
│ ├── UiaPatternInfoHelper.cs
│ └── UiaPropertyInfoHelper.cs
├── UiaCallFailedException.cs
└── packages.config
├── README.md
├── UIAControls
├── BaseFragmentProvider.cs
├── BaseFragmentRootProvider.cs
├── BaseSimpleProvider.cs
├── ColorProviderClientInstance.cs
├── ColorProviderHandler.cs
├── ColorSchema.cs
├── Form1.Designer.cs
├── Form1.cs
├── Form1.resx
├── IColorPattern.cs
├── IColorProvider.cs
├── ITestPattern.cs
├── ITestProvider.cs
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── ReadyStateSchema.cs
├── TestPatternProvider.cs
├── TestProviderClientInstance.cs
├── TestProviderHandler.cs
├── TestSchema.cs
├── TriColorControl.Designer.cs
├── TriColorControl.cs
├── TriColorControl.resx
├── TriColorFragmentProvider.cs
├── TriColorProvider.cs
├── TriColorValue.cs
├── TriColorValueHelper.cs
├── UIAControls.csproj
└── packages.config
├── UiaControlsTest
├── AttributeDrivenPatternSchemaTests.cs
├── CustomPatternBaseTests.cs
├── CustomPatternUnitTest.cs
├── Properties
│ └── AssemblyInfo.cs
├── TargetApp.cs
├── UiaControlsTest.csproj
├── WpfAppTests.cs
└── packages.config
├── UiaCustomPattersManaged.nuspec
├── UiaCustomPattersManaged.sln
├── WpfAppWithAdvTextControl
├── AdvTextBox.cs
├── AdvTextBoxAutomationPeer.cs
├── App.config
├── App.xaml
├── App.xaml.cs
├── AutomationElementRetievingPattern.cs
├── CaretPositionPattern.cs
├── ICaretPositionPattern.cs
├── ICaretPositionProvider.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── TestControl.cs
├── TestControlAutomationPeer.cs
├── TestOfMoreThanTwoPatternPropertiesPattern.cs
├── WpfAppWithAdvTextControl.csproj
└── packages.config
├── build-and-publish.bat
├── install.ps1
└── packages
└── repositories.config
/.gitignore:
--------------------------------------------------------------------------------
1 | _ReSharper*
2 | *.opensdf
3 | *.sdf
4 | *.DotSettings
5 | [Bb]in/
6 | [Oo]bj/
7 | *.suo
8 | Debug/
9 | *.user
10 | UiaClientInterop/UIAutomationClient_i.c
11 | UiaCoreInterop/UIAutomationCore_i.c
12 | packages/
13 | Release/
14 | *.VC.opendb
15 | *.VC.db
16 | .vs/
17 | UiaCoreInterop/Build/
18 |
--------------------------------------------------------------------------------
/BuildUIACoreInterop.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | set netfxtools=c:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\
4 | set ResultDir=.\UIACoreInterop\Build\
5 | set framework=c:\Windows\Microsoft.NET\Framework64\v4.0.30319\
6 | set VS=%VS140COMNTOOLS%
7 |
8 | echo Settings VS variables: %VS%vsvars32.bat
9 | call %VS%vsvars32.bat
10 | set WindowsSdkDir=c:\Program Files (x86)\Windows Kits\8.1\
11 |
12 | mkdir %ResultDir%
13 |
14 | echo Running midl: %WindowsSdkDir%include\um\UIAutomationCore.idl -^> %ResultDir%UIAutomationCore.tlb
15 | midl /nologo /char signed /out %ResultDir% /tlb UIAutomationCore.tlb /h UIAutomationCore_h.h "%WindowsSdkDir%include\um\UIAutomationCore.idl"
16 | if errorlevel 1 goto somethingbad
17 |
18 | echo Importing TLB: %ResultDir%UIAutomationCore.tlb -^> %ResultDir%Raw\Interop.UIAutomationCore.dll
19 | tlbimp /machine:Agnostic /silent /out:%ResultDir%Raw\Interop.UIAutomationCore.dll /namespace:Interop.UIAutomationCore %ResultDir%UIAutomationCore.tlb
20 | if errorlevel 1 goto somethingbad
21 |
22 | echo Disassembling interop DLL: %ResultDir%Raw\Interop.UIAutomationCore.dll -^> %ResultDir%UIAutomationCore.il
23 | ildasm %ResultDir%Raw\Interop.UIAutomationCore.dll /out=%ResultDir%UIAutomationCore.il /nobar
24 | if errorlevel 1 goto somethingbad
25 |
26 | echo Building CustomizeUiaInterop project
27 | MSBuild.exe .\CustomizeUiaInterop\CustomizeUiaInterop.csproj /t:Build /p:Configuration=Debug;SolutionDir=.
28 | if errorlevel 1 goto somethingbad
29 |
30 | echo Customizing UIA IL: %ResultDir%UIAutomationCore.il -^> %ResultDir%Custom.UIAutomationCore.il
31 | .\CustomizeUiaInterop\bin\Debug\CustomizeUiaInterop %ResultDir%UIAutomationCore.il %ResultDir%Custom.UIAutomationCore.il
32 | if errorlevel 1 goto somethingbad
33 |
34 | echo Assembling IL: %ResultDir%Custom.UIAutomationCore.il -^> %ResultDir%Interop.UIAutomationCore.dll
35 | ilasm /dll /output=%ResultDir%Interop.UIAutomationCore.dll %ResultDir%Custom.UIAutomationCore.il
36 | if errorlevel 1 goto somethingbad
37 |
38 | echo Finished successfully
39 | goto end
40 |
41 | :somethingbad
42 | echo Something Bad Happened.
43 | exit /B 1
44 |
45 | :end
46 | exit /B 0
--------------------------------------------------------------------------------
/CustomizeUiaInterop/CustomizeUiaInterop.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 9.0.30729
7 | 2.0
8 | {12F27127-240F-4AAB-A233-D7C0A2BFC70B}
9 | Exe
10 | Properties
11 | CustomizeUiaInterop
12 | CustomizeUiaInterop
13 | v4.0
14 | 512
15 |
16 |
17 | true
18 | bin\Debug\
19 | DEBUG;TRACE
20 | full
21 | AnyCPU
22 | prompt
23 | MinimumRecommendedRules.ruleset
24 |
25 |
26 | bin\Release\
27 | TRACE
28 | true
29 | pdbonly
30 | AnyCPU
31 | prompt
32 | MinimumRecommendedRules.ruleset
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
52 |
--------------------------------------------------------------------------------
/CustomizeUiaInterop/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace CustomizeUiaInterop
5 | {
6 | internal class Program
7 | {
8 | private static void ShowHelp()
9 | {
10 | Console.WriteLine("CustomizeUiaInterop