I'm working on automating a windows application. I'm using the teststack white framework. I've hit a problem. This program has a 'Window' object that I cannot see inside of. White shows no controls inside of it. The Inspect.exe shows no controls inside of it either when running in UI Automation mode. If I switch Inspect to MSAA it see the controls inside just fine. Is there anyway for me to use MSAA from C# to get a handle on these controls?
MSAA finds controls UI Automation doesn't
3.7k Views Asked by JonM At
1
There are 1 best solutions below
Related Questions in C#
- How to call a C language function from x86 assembly code?
- What does: "char *argv[]" mean?
- User input sanitization program, which takes a specific amount of arguments and passes the execution to a bash script
- How to crop a BMP image in half using C
- How can I get the difference in minutes between two dates and hours?
- Why will this code compile although it defines two variables with the same name?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Why can't I use the file pointer after the first read attempt fails?
- #include Header files in C with definition too
- OpenCV2 on CLion
- What is causing the store latency in this program?
- How to refer to the filepath of test data in test sourcecode?
- 9 Digit Addresses in Hexadecimal System in MacOS
- My server TCP doesn't receive messages from the client in C
- Printing the characters obtained from the array s using printf?
Related Questions in UI-AUTOMATION
- How to parse data into cucumber's variables in feature file?
- Can't find UIA element with FindFirst method (VBA)
- Detect clickable areas within <img> tag in Ionic project
- includes assertion in playwright for for CSS and Attribute?
- How to find the next/child button of a div and then click it in Power Automate Desktop with Jquery selector
- How to inject a QR code image for end-to-end testing a QR code scanning app
- Why my selenium java code is throwing exceptions inconsistently?
- Is it preferred to write loops and conditions while writing my testing automation script using selenium? Is there another best practice should i use?
- Use different @BeforeMethod methods in TestNG
- How to run data driven tests parallelly in robot framework?
- Appium: Parallel execution on multiple devices - Failed to click on one device while happens in the other
- I got this error for multiremote capabilities whre I want to use object model: Error: ReferenceError: $ is not defined
- Scroll a specific scrollbar out of available ones to the item which is not visible on launch by default
- Playwright is not generating videos when we create our own context
- Insecure download blocked with TestCafe
Related Questions in MICROSOFT-UI-AUTOMATION
- Crash on calling GetFocusedElement from a thread
- Inspect.exe can find elements that UIAutomation cannot find
- How to use FindAll() with the nuget package Interop.UIAutomationClient
- Optimizing UI Element Search in a Large, Static Desktop Application
- Get current song title from Windows Media Player UI in the bottom left
- Possible Memory Leak in UIAutomationClient.DLL in Windows 11
- UIA Can't get IUIAutomationTextRange::FindText to work with control characters from PowerShell ISE
- UI Automation to press toolbar button in another application in C#
- Get the IUIAutomationElement of the "main form" of an application using C++?
- Click UI element in window not working on Power Automate Desktop
- How to find UI automation element via UIA_AutomationIdPropertyId
- How to use UiAutomationClient Without UIAComWrapper Causing Conflict?
- IUIAutomationElement to WinRT AutomationElement mapping in C#
- UI Automation Performance
- Convert IUIAutomationElement to IUIAutomationElement6, to invoke get_CurrentFullDescription method
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
If you can identify the MSAA functions you need, you can use P/Invoke to call them from C#. Here's an example article about doing that with MSAA:
http://www.codeproject.com/Articles/38906/UI-Automation-Using-Microsoft-Active-Accessibility
Also, pinvoke.net can be used to identify the IAccessible (MSAA) functions:
http://www.pinvoke.net/search.aspx?search=IAccessible&namespace=[All]
Here's another SO answer along those lines:
MSAA COM-based?
Finally, as an alternative to P/Invoke, you might also be able to use Tlbimp.exe to create a wrapper assembly for oleacc.dll, and access the MSAA functions through it. I'm not sure if that works with MSAA, but it's worth a try.
As an example, here's a C# hello world example I wrote that shows how to use the UI Automation COM interface from C#, using an assembly created with Tlbimp.exe:
https://github.com/billagee/test-polyglot/blob/master/printDesktopUiaElementName/ms-ui-automation-com-api/csharp/PrintDesktopUiaElementNameViaCom/PrintDesktopUiaElementNameViaComProgram.cs
As mentioned in the comments in that file, as of the Windows 7.1 SDK, generating an assembly with Tlbimp.exe looked like this:
"%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\bin\tlbimp.exe" %windir%\system32\UIAutomationCore.dll /out:interop.UIAutomationCore.dll