微信更新了,旧版微信的后台只有一个Wechat.exe,新版的微信后台有3个Weixin.exe, 原来用C# 加 FlaUI.UIA3 做的自动发送信息的软件用不了了。而且不知道怎样改,求高手指教,不胜感谢。
5条回答 默认 最新
关注让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案让您满意,请采纳、点赞、关注,非常感谢!
.
每日一句正能量,让它带给您好心情:汗水不会说谎,它会雕刻出你想要的模样。
.针对微信更新后自动化失效的问题,这里提供完整的解决方案:
- 新版微信进程变化分析
- 旧版:单进程 Wechat.exe
- 新版:多进程 Weixin.exe(通常含主进程、渲染进程等)
- 修改方案(使用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();- 关键注意事项:
- 进程名已从 Wechat.exe 变为 Weixin.exe
- 需要区分主进程(通过 MainWindowTitle 判断)
- 新版微信可能增加了UI自动化防护措施
- 建议添加异常处理和重试机制
- 备选方案建议:
如果FlaUI持续失效,可考虑:
- 使用微信官方API(需企业微信相关权限)
- 改用Windows API模拟输入(SendInput等)
- 使用浏览器自动化方案(如Selenium,适用于网页版微信)
- 调试建议:
- 使用Inspect.exe工具查看新版微信的UI结构
- 关注控件AutomationId和Name属性的变化
- 可能需要等待窗口完全加载后再操作
注意:微信频繁更新可能导致自动化方案失效,建议将核心逻辑设计为可配置模式,便于快速适配新版本。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报