Skip to content

andrestubbe/FastUIA

Repository files navigation

FastUIA 0.1.0 [ALPHA-2026-06-14] — Native Windows UI Automation API for Java

Status License: MIT Java Platform JitPack

⚡ High-performance, native Windows UI Automation (UIA) for Java.

FastUIA provides real-time native UI Automation for Java applications without the overhead of heavy frameworks.

FastUIA Showcase


Table of Contents


Quick Start

import fastuia.FastUIA;
import fastuia.FastUIAElement;

public class Demo {
    public static void main(String[] args) {
        FastUIA uia = new FastUIA();
        FastUIAElement el = uia.getFocusedElement();
        if (el != null) {
            System.out.println("Focused: " + el.getName());
            System.out.println("Type:    " + el.getControlType());
            if (el.supportsValue()) {
                System.out.println("Value: " + el.getValue());
            }
        }
    }
}

Key Features

  • Native Performance — Direct UI Automation API access via JNI, no COM overhead.
  • 🎯 Zero Overhead — No polling, purely event-driven callbacks.
  • 🔗 Zero Dependencies — Just requires Java 17+ and Windows.
  • 🧩 Object-Oriented — Clean, type-safe API for elements and automation patterns.

Installation

Option 1: Maven (Recommended)

Add the JitPack repository and the dependencies to your pom.xml:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependencies>
    <!-- FastUIA Library -->
    <dependency>
        <groupId>com.github.andrestubbe</groupId>
        <artifactId>FastUIA</artifactId>
        <version>0.1.0</version>
    </dependency>

    <!-- FastCore (Required Native Loader) -->
    <dependency>
        <groupId>com.github.andrestubbe</groupId>
        <artifactId>FastCore</artifactId>
        <version>0.1.0</version>
    </dependency>
</dependencies>

Option 2: Gradle (via JitPack)

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.andrestubbe:FastUIA:0.1.0'
    implementation 'com.github.andrestubbe:FastCore:0.1.0'
}

Option 3: Direct Download (No Build Tool)

Download the latest JARs directly to add them to your classpath:

  1. 📦 fastuia-0.1.0.jar (The Core Library)
  2. ⚙️ fastcore-0.1.0.jar (The Mandatory Native Loader)

Important

All JARs must be in your classpath for the native JNI calls to function correctly.


API Reference

Method Description
getName() Get the name of the UI element.
getControlType() Get the ControlType enum value.
getValue() / setValue(String) Access the ValuePattern if supported.
getSelection() / setSelection(String) Access the TextPattern if supported.
invoke() Trigger the default action (InvokePattern).
expand() / collapse() Control ExpandCollapsePattern.
getBoundingRect() Get the Rect (x, y, w, h).
getParent() / getFirstChild() Navigate the UI tree.
supportsValue() / supportsText() Check for pattern support.

Documentation

  • COMPILE.md: Full compilation guide (MSVC C++17 build chain + JNI Setup).
  • REFERENCE.md: Full API descriptions and method reference.
  • PHILOSOPHY.md: The engineering rationale for zero-allocation performance.
  • ROADMAP.md: Future milestones and planned features.

Platform Support

Platform Status
Windows 10/11 ✅ Fully Supported
Linux 🚧 Planned
macOS 🚧 Planned

License

MIT License — See LICENSE file for details.


Related Projects


Part of the FastJava EcosystemMaking the JVM faster. ⚡

About

High‑performance Java wrapper for Microsoft UI Automation (UIA), providing a clean, object‑based API for inspecting, querying, and interacting with native Windows UI elements. Designed for system‑wide automation, accessibility tooling, testing pipelines, and real‑time overlay integrations. Minimal, deterministic, zero‑noise architectur.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors