WeChat File Sender

# wechat-file-sender

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "WeChat File Sender" with this command: npx skills add 26048608982lp-ai/wechat-file-sender

wechat-file-sender

Send files via Windows WeChat client using RPA automation. No external dependencies — pure PowerShell + Windows Automation API.

Security: filePath must be an absolute path. contactName is validated to 50 chars max, Chinese/alphanumeric/underscore/space only. No network calls, no data exfiltration.

Setup

Requirements: Windows OS with WeChat desktop client installed.

clawhub install wechat-file-sender --dir <your-skills-dir>

Usage

Command line

node scripts/send-file-to-wechat.js "<filePath>" "<contactName>"

OpenClaw trigger phrases

  • 向wechat发送文件给[联系人]:文件路径
  • 发微信文件给[联系人]:文件路径

PowerShell Script Source (scripts/send-file.ps1)

Full source — audit it before running:

param(
    [string]$filePath,
    [string]$contactName
)

Add-Type -AssemblyName UIAutomationClient
Add-Type -AssemblyName UIAutomationTypes
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName PresentationCore

# Step 0: Check file exists
if (-not (Test-Path $filePath)) {
    Write-Host "[ERROR] File not found"
    exit 1
}

# Step 1: Find WeChat window (class Qt51514QWindowIcon)
$root = [System.Windows.Automation.AutomationElement]::RootElement
$allWindows = $root.FindAll([System.Windows.Automation.TreeScope]::Children,
    (New-Object System.Windows.Automation.PropertyCondition(
        [System.Windows.Automation.AutomationElement]::ControlTypeProperty,
        [System.Windows.Automation.ControlType]::Window)))

$wechatWindow = $null
foreach ($w in $allWindows) {
    if ($w.Current.ClassName -match 'Qt51514QWindowIcon') {
        $wechatWindow = $w
        break
    }
}

if (-not $wechatWindow) {
    Write-Host "[ERROR] WeChat not found"
    exit 1
}

# Win32 API for window focus
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class WinAPI {
    [DllImport("user32.dll")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
    [DllImport("user32.dll")]
    public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
    [DllImport("user32.dll")]
    public static extern bool IsIconic(IntPtr hWnd);
    public const int SW_MINIMIZE = 6;
    public const int SW_RESTORE = 9;
}
"@

$hwnd = [IntPtr]$wechatWindow.Current.NativeWindowHandle
if ([WinAPI]::IsIconic($hwnd)) {
    [WinAPI]::ShowWindow($hwnd, [WinAPI]::SW_RESTORE)
}
[WinAPI]::SetForegroundWindow($hwnd)
Start-Sleep 1

# Step 2: Open search (Ctrl+F)
[System.Windows.Forms.SendKeys]::SendWait("^f")
Start-Sleep 1

# Step 3: Type contact name (via clipboard — SendKeys can't type Chinese)
[System.Windows.Forms.Clipboard]::Clear()
Start-Sleep 0.3
[System.Windows.Forms.Clipboard]::SetText($contactName)
Start-Sleep 0.5
[System.Windows.Forms.SendKeys]::SendWait("^v")
Start-Sleep 2

# Step 4: Select first result and enter chat
[System.Windows.Forms.SendKeys]::SendWait("{UP}")
Start-Sleep 0.5
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Start-Sleep 1

# Step 5: CLIPBOARD ACTIVATION TRICK
# When staying in the same window, clipboard may not activate.
# Minimize -> set clipboard -> restore = clipboard activates
[WinAPI]::ShowWindow($hwnd, [WinAPI]::SW_MINIMIZE)
Start-Sleep 0.5

$fc = New-Object System.Collections.Specialized.StringCollection
$fc.Add((Resolve-Path $filePath))
[System.Windows.Forms.Clipboard]::Clear()
Start-Sleep 0.5
[System.Windows.Forms.Clipboard]::SetFileDropList($fc)
Start-Sleep 1

[WinAPI]::ShowWindow($hwnd, [WinAPI]::SW_RESTORE)
Start-Sleep 0.5
[WinAPI]::SetForegroundWindow($hwnd)
Start-Sleep 0.5

# Step 6: Paste and send
[System.Windows.Forms.SendKeys]::SendWait("^v")
Start-Sleep 1
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Write-Host "[OK] File sent to: $contactName"

Key Implementation Notes

  • ExecutionPolicy Bypass is required — PowerShell blocks .ps1 scripts by default. Bypass only affects this specific script file, not system policy.
  • No admin needed — uses only user-level Win32 APIs (SetForegroundWindow, ShowWindow) and Windows Automation API.
  • Clipboard activation trick — solves the Windows clipboard issue when source and target are the same window.
  • Contact name via clipboard — SendKeys cannot type Chinese characters; workaround is to copy to clipboard and Ctrl+V.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

WeChat Moments Post

Automate posting to WeChat Moments on Windows desktop (open Moments window, trigger publish entry, select image, paste caption, click publish). Use when aske...

Registry SourceRecently Updated
3860Profile unavailable
Automation

Windows文件管理器

Windows文件管理器 - 原创技能。让AI执行Windows文件操作,包括文件/文件夹的创建、复制、移动、删除、搜索、重命名等。适用于文件整理、批量处理、自动化工作流等场景。

Registry SourceRecently Updated
290Profile unavailable
Automation

WeChat Mail Bridge (Windows/OpenClaw)

Install, configure, run, and troubleshoot a Windows WeChat desktop automation and BHMailer/OpenClaw mail bridge bundle, including File Transfer Assistant wor...

Registry SourceRecently Updated
3420Profile unavailable
Automation

微信QQ自动发消息

Windows 平台微信和 QQ 自动发消息工具。支持搜索联系人、发送消息、截图OCR分析、智能回复建议(需用户确认后发送)。

Registry SourceRecently Updated
1.2K4Profile unavailable