sowinworkTwo 2025-08-08 15:50 采纳率: 100%
浏览 14
已结题

C# 微信自动发送信息问题

微信更新了,旧版微信的后台只有一个Wechat.exe,新版的微信后台有3个Weixin.exe, 原来用C# 加 FlaUI.UIA3 做的自动发送信息的软件用不了了。而且不知道怎样改,求高手指教,不胜感谢。

  • 写回答

5条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-08-08 15:52
    关注

    让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。

    如果答案让您满意,请采纳、点赞、关注,非常感谢!
    .  
    每日一句正能量,让它带给您好心情:汗水不会说谎,它会雕刻出你想要的模样。
    .  

    针对微信更新后自动化失效的问题,这里提供完整的解决方案:

    1. 新版微信进程变化分析
    • 旧版:单进程 Wechat.exe
    • 新版:多进程 Weixin.exe(通常含主进程、渲染进程等)
    1. 修改方案(使用FlaUI.UIA3)
    using FlaUI.UIA3;
    using FlaUI.Core.AutomationElements;
    
    
    // 1. 获取微信主进程(注意进程名变化)
    var weixinProcess = System.Diagnostics.Process.GetProcessesByName("Weixin").FirstOrDefault(p => 
        !string.IsNullOrEmpty(p.MainWindowTitle));
    
    
    if (weixinProcess == null)
    {
        throw new Exception("未找到微信主进程");
    }
    
    
    // 2. 使用FlaUI连接
    var automation = new UIA3Automation();
    var app = FlaUI.Core.Application.Attach(weixinProcess.Id);
    var mainWindow = app.GetMainWindow(automation);
    
    
    // 3. 查找聊天窗口(示例:通过窗口标题包含"微信")
    var chatWindow = mainWindow.FindFirstDescendant(cf => cf.ByName("微信").And(cf.ByControlType(FlaUI.Core.Definitions.ControlType.Window)));
    
    
    // 4. 后续操作(示例:查找输入框并发送消息)
    var input = chatWindow.FindFirstDescendant(cf => cf.ByAutomationId("输入框的AutomationId"));
    input.Patterns.Value.Pattern.SetValue("要发送的消息");
    
    
    var sendButton = chatWindow.FindFirstDescendant(cf => cf.ByName("发送").And(cf.ByControlType(FlaUI.Core.Definitions.ControlType.Button)));
    sendButton.Click();
    
    1. 关键注意事项:
    • 进程名已从 Wechat.exe 变为 Weixin.exe
    • 需要区分主进程(通过 MainWindowTitle 判断)
    • 新版微信可能增加了UI自动化防护措施
    • 建议添加异常处理和重试机制
    1. 备选方案建议:
      如果FlaUI持续失效,可考虑:
    • 使用微信官方API(需企业微信相关权限)
    • 改用Windows API模拟输入(SendInput等)
    • 使用浏览器自动化方案(如Selenium,适用于网页版微信)
    1. 调试建议:
    • 使用Inspect.exe工具查看新版微信的UI结构
    • 关注控件AutomationId和Name属性的变化
    • 可能需要等待窗口完全加载后再操作

    注意:微信频繁更新可能导致自动化方案失效,建议将核心逻辑设计为可配置模式,便于快速适配新版本。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 8月8日