Repository navigation
winuse 0.2.0
winuse 0.2.0 adds Java Swing support: Swing windows are read and operated through Java Access Bridge like UI Automation apps, and winuse speaks the bridge's wire protocol itself, so 32-bit Java 7/8 JREs that ship only the legacy bridge work too.
Highlights
- Java Swing through Java Access Bridge. Swing windows (
SunAwt*) are read into the same element model as UIA (j{n}refs), soget_ui_tree,act/find/check,click,invoke,set_text,set_checked,select_item,get_text,get_list_items,assert_*,wait_forand scenario replay work on them. Menu items are listed and invokable while their menu is closed. - Built-in bridge client, no DLL. winuse talks the Java Access Bridge wire protocol directly (hidden client window, hello handshake, one memory-mapped file per JVM). Both wire formats are spoken: the wide one of
JavaAccessBridge-32/64.dlland Java 9+'sjavaaccessbridge.dll, and the legacy one of the suffix-lessJavaAccessBridge.dllthat 32-bit Java 7/8 JREs ship. Several JVMs of mixed formats at once. Tested on Temurin 21 x64, Temurin 8 x86 and Temurin 8 x86 on its legacy bridge, and confirmed on a 32-bit Java 7 application. - Enabling accessibility without touching the JRE. Apps started with
process_rungetJAVA_TOOL_OPTIONS=-Djavax.accessibility.assistive_technologies=com.sun.java.accessibility.AccessBridge(WINUSE_JAVA_ACCESSIBILITY=offdisables it); for apps started any other way,winuse jab enable|disable|statusmanages%USERPROFILE%\.accessibility.properties. - Diagnostics.
winuse doctorreports the client window and the JVMs connected to it, the user-profile enablement, and every Java window with its JVM:jvm.dllpath and version, bitness, whichJavaAccessBridge*.dllit loaded and its wire format, the Java and bridge versions the JVM reports, and whether the bridge answers. When a Java window cannot be read,get_ui_treereturnsjava_access_bridgewith the reason andactreportsno elements (java access bridge: ...); the window then falls back to visual grounding. - Settings:
WINUSE_JAB(auto/off),WINUSE_JAVA_ACCESSIBILITY(on/off).
Install
- Install the .NET 10 runtime (or SDK).
- Unzip
winuse-0.2.0-win-x64.zipinto a folder. - Register with Claude Code:
claude mcp add winuse -- <folder>\winuse.exe --mcp - Set
JEV_API_KEY, orCLOUDFLARE_ACCOUNT_IDandCLOUDFLARE_API_TOKEN, as user environment variables, then runwinuse doctor.
Upgrading from 0.1.0: unzip over the old folder. Java apps need accessibility enabled in their JVM when they start (see above); restart them after winuse jab enable.
Known issues
get_tabledoes not read Swing tables yet (get_table is not supported for Java elements yet).- A JRE without the Java side of the bridge (trimmed Java 8 without
JavaAccessBridge-32.dll/access-bridge-32.jar, or ajlinkimage withoutjdk.accessibility) cannot be read, and a JVM on such a JRE fails to start when accessibility is requested (AWTError: Assistive Technology not found): setWINUSE_JAVA_ACCESSIBILITY=offfor apps on such a JRE and do not usewinuse jab enable.doctorreports the missing files. A Java app running elevated or as another user is out of reach. type_textwith Japanese text can be garbled under the Japanese IME (intermittent, under investigation).
Full changelog: CHANGELOG.md