# client_csharp **Repository Path**: cangooo/client_csharp ## Basic Information - **Project Name**: client_csharp - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-08 - **Last Updated**: 2025-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 同花顺GUI自动化程序 (C# 版本) ## 🎯 功能概述 这是一个用C#编写的同花顺GUI自动化程序,主要功能包括: - ✅ **进程连接**: 自动连接到 `xiadan.exe` 进程 - ✅ **弹出框处理**: 检测并自动关闭弹出框 (#32770类型) - ✅ **TreeView导航**: 使用纯TreeView控件操作导航菜单 - ✅ **菜单点击**: 精准点击"查询[F4]" -> "资金股票"菜单路径 ## 🚀 快速开始 ### 环境要求 - .NET Framework 4.8 - Windows 操作系统 - 同花顺客户端 (`xiadan.exe`) ### 编译和运行 ```bash # 编译项目 dotnet build # 运行程序(方式1:使用dotnet) dotnet run # 运行程序(方式2:直接运行exe) .\bin\Debug\TongHuaShunAutomation.exe ``` ## 🔧 核心特性 ### 1. 纯Windows API实现 - 使用 `user32.dll` 进行窗口操作 - 无需第三方GUI自动化库 - 高性能,低延迟 ### 2. 智能TreeView导航 ```csharp // 菜单路径定义 string[] menuPath = { "查询[F4]", "资金股票" }; // 自动导航 if (SwitchLeftMenus(mainWindow, menuPath)) { Console.WriteLine("✅ 菜单导航成功"); } ``` ### 3. 稳定的定位策略 - **"查询[F4]"**: 基于inspect.exe数据,直接定位到第6个TreeView项目 - **"资金股票"**: 选择查询菜单展开后的第一个子项目 - 避免复杂的文本解析,提高稳定性 ### 4. 完善的错误处理 - 连接超时处理 - 窗口激活失败重试 - TreeView控件查找重试机制 ## 📋 程序流程 1. **🔗 连接阶段** ``` 连接到 xiadan.exe 进程 -> 获取进程ID ``` 2. **🧹 清理阶段** ``` 枚举所有窗口 -> 识别弹出框 -> 自动关闭 ``` 3. **🎯 定位阶段** ``` 查找主窗口 -> 激活窗口 -> 定位TreeView控件 ``` 4. **🗺️ 导航阶段** ``` 定位"查询[F4]"(第6项) -> 展开菜单 -> 选择"资金股票"(第1项) -> 发送F5刷新 ``` ## 🛡️ 安全特性 - **无鼠标模拟**: 完全基于Windows消息机制,不会干扰用户鼠标操作 - **进程隔离**: 只操作指定的xiadan.exe进程 - **非侵入式**: 不修改程序文件,只进行界面操作 ## 📊 与Rust版本对比 | 特性 | C# 版本 (.NET Framework 4.8) | Rust 版本 | |------|---------|-----------| | 性能 | 良好 | 优秀 | | 开发效率 | 高 | 中等 | | 内存安全 | 运行时检查 | 编译时保证 | | Windows API调用 | 简单 | 需要unsafe | | 部署 | 需要.NET Framework 4.8 | 单一可执行文件 | | 调试体验 | 优秀 | 良好 | | 兼容性 | Windows 7+ | Windows 10+ | ## 🔍 调试信息 程序运行时会输出详细的调试信息: ``` 🚀 同花顺自动操作程序启动 (C# 版本) 🔗 正在连接到 xiadan.exe... ✅ 连接成功,PID: 12345 🔍 正在检测弹出框... ℹ️ 没有发现弹出框 🔍 正在查找主窗口... 📋 找到主窗口: "网上股票交易系统5.0" (句柄: 0x1A2B3C) ✅ 找到主窗口,开始TreeView菜单导航... 🌲 开始TreeView菜单导航: ["查询[F4]", "资金股票"] 🔄 正在激活窗口... ✅ 使用 SetForegroundWindow 成功激活窗口 ✅ 找到TreeView控件 (control_id=129, class_name="SysTreeView32") 🗺️ 导航菜单路径: ["查询[F4]", "资金股票"] ✅ 直接定位到第6个项目(查询菜单): 12345678 📂 展开项目: 12345678 ✅ 直接选择第一个子菜单项(资金股票): 87654321 ✅ 选择项目: 87654321 ✅ 已选择最终菜单项: "资金股票" ✅ TreeView菜单导航成功 ✅ 成功使用TreeView导航菜单: 查询[F4] -> 资金股票 🎉 程序执行完成 ``` ## ⚠️ 注意事项 1. **管理员权限**: 某些Windows版本可能需要管理员权限才能进行跨进程窗口操作 2. **防病毒软件**: 部分防病毒软件可能会拦截进程间通信,请添加信任 3. **同花顺版本**: 程序基于特定版本的同花顺界面设计,不同版本可能需要调整参数 ## 🔧 自定义配置 如需修改菜单路径或其他参数,请编辑 `Program.cs` 中的相关常量: ```csharp // 修改菜单路径 string[] menuPath = { "你的菜单1", "你的菜单2" }; // 修改连接超时时间 int timeoutSeconds = 15; // 修改目标进程名 string targetExe = "你的程序.exe"; ``` ## 🤝 技术支持 如有问题或建议,请查看代码注释或联系开发者。 --- **开发语言**: C# (.NET Framework 4.8) **开发环境**: Visual Studio / VS Code **测试平台**: Windows 7/8/10/11 **部署要求**: .NET Framework 4.8 运行时