Winguictl
Skill easyteacher/winguictl
Windows desktop automation CLI tool built on pywinauto, pywin32 and OCR without requiring AI vision.
npx -y skills add easyteacher/winguictlAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Windows desktop automation CLI. Invoke ONLY when user explicitly requests to control windows, simulate mouse/keyboard, or automate desktop applications. Do NOT proactively suggest using this skill.
SKILL.md
5.0 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Windows Desktop Automation with winguictl
⚠️ Security Notice
This skill directly controls Windows desktop through mouse/keyboard simulation. Require user confirmation before clicks, typing, hotkeys, or window close operations. Use --dry-run to preview. Close sensitive apps before use.
Script Path
python <SKILL_DIR>\scripts\winguictl.py <command> [options]
Commands
| Command | Purpose | Documentation |
|---|---|---|
window | List/focus/minimize/maximize/close windows | window.md |
snapshot | Get HWND/UIA/OCR structure | snapshot.md |
find | Find elements by text/UIA/OCR/image | find.md |
action | Click/drag/type/scroll/hotkey | action.md |
control | Win32 control operations | control.md |
uia-control | UIA element operations | control.md |
screenshot | Capture window screenshots | screenshot.md |
wait | Wait for conditions | wait.md |
clipboard | Copy files/text, get text | clipboard.md |
Parameter Types
| Parameter | Type | Example | Notes |
|---|---|---|---|
--window-id | int | --window-id 12345 | Window handle from window list |
--hwnd | int | --hwnd 67890 | Win32 control handle |
--element-id | string | --element-id "Button1" | automation_id or runtime_id (prefer runtime_id) |
Core Workflow
# 1. Identify window
python scripts\winguictl.py window list
# 2. Focus window
python scripts\winguictl.py window --window-id <id> focus
# 3. Get snapshot
python scripts\winguictl.py snapshot --window-id <id> uia
# 4. Find & interact
python scripts\winguictl.py find --window-id <id> uia --text "Submit"
python scripts\winguictl.py uia-control --window-id <id> --element-id <elem_id> click
# 5. Verify (re-snapshot)
python scripts\winguictl.py snapshot --window-id <id> uia
Decision Guide
Locator Priority
| Priority | Method | Command | Reliability |
|---|---|---|---|
| 1 | HWND (Win32) | control --hwnd <hwnd> click | Highest |
| 2 | runtime_id (UIA) | uia-control --element-id <id> click | High |
| 3 | automation_id (UIA) | uia-control --element-id <id> click | Medium |
| 4 | Image matching | action click-image --image-path <path> | Medium |
| 5 | Coordinates | action click --relative-x/y | Lowest |
Click Method Selection
| Command | Mechanism | Best For |
|---|---|---|
uia-control click | UIA InvokePattern | Standard Windows controls, WinUI3 |
action click --element-id | Mouse simulation at center | WeChat, custom controls, SplitButton, ToolBar |
Recommendation: Try uia-control click first. If it fails with errors like 'UIAWrapper' object has no attribute 'click' or returns ok: false, immediately fall back to action click --element-id.
Common Scenarios
| Scenario | Command |
|---|---|
| Win32 control with hwnd | control --hwnd <hwnd> click |
| UIA element with runtime_id | uia-control --element-id "42-3155764" click |
| Text-based element | find ocr "text" → action click --element-id |
| Qt applications | Add --skip-actions --skip-state for faster UIA |
| SplitButton / ToolBar (save dialog toolbar) | action click --element-id (NOT uia-control) |
| Set text in edit/combo box | uia-control set-text "value" --verify-change |
Key Rules
- Re-snapshot after actions: UI state changes after clicks/typing
- Use
--dry-run: Preview operations before execution - Always prefer control/uia-control over action: More reliable for standard Windows controls, WinUI3, and custom controls that implement UIA interfaces.
- Prefer runtime_id: More reliable than automation_id
- Report window_id: Always include exact window identifier in results
- Coordinate system:
relative_rect= window-relative;absolute_rect= screen-absolute
Application Guides
- WeChat Automation — WeChat 4.1.6+ messaging, contacts, files, calls, Moments
- Standard File Dialog — Windows "打开/另存为" dialog automation
References
- Dependencies — pywinauto, pywin32, Pillow, wx-ocr (optional)
- Output Format — JSON structure, exit codes, boundary markers
- Coordinates — Coordinate system details
- Security Guidelines — Detailed safety practices
What ships with it: 55 files
420.2 KB alongside SKILL.md, 15 of them executable
assets/
- requirements-dev.txt249 B
- requirements-optional.txt172 B
- requirements.txt142 B
- standard-file-dialog/dialog.md1.7 KB
- standard-file-dialog/file-selection.md3.4 KB
- standard-file-dialog/navigation.md2.7 KB
- standard-file-dialog/save-dialog.md3.3 KB
- standard-file-dialog/standard-file-dialog.md4.7 KB
- wechat/auto-reply.md2.4 KB
- wechat/calls.md2.1 KB
- wechat/contacts.md4.6 KB
- wechat/faq.md6.8 KB
- wechat/favorites.md2.8 KB
- wechat/files.md2.3 KB
- wechat/friend-settings.md2.1 KB
- wechat/messages.md13.6 KB
- wechat/moments.md2.6 KB
- wechat/search.md5.6 KB
- wechat/settings.md4.2 KB
- wechat/system-tools.md4.0 KB
- wechat/wechat.md2.1 KB
- wechat/window.md1.1 KB
references/
- action.md4.3 KB
- clipboard.md2.3 KB
- control.md8.1 KB
- coordinates.md1.2 KB
- dependencies.md1.1 KB
- driver_test.md23.4 KB
- find.md3.7 KB
- output-format.md2.1 KB
- screenshot.md2.2 KB
- SECURITY.md6.7 KB
- snapshot.md2.4 KB
- wait.md3.5 KB
- window.md1.7 KB
scripts/
- clipboard_driver.pyruns3.6 KB
- AGENTS.md12.2 KB
- .gitignore86 B
- .pylintrc685 B
- README.md1.7 KB
15 more files not listed here. See all 55 in the repository.