写在前面
先交代背景:我是个Web前端开发,日常工作就是写Vue、React、Node.js,跟浏览器打交道。浏览器之外的操作系统,对我来说就像一个"黑盒"。
做了那么多年Web开发,我从来没写过一行Windows桌面程序的代码。
C#?不会。
Win32 API?听说过,没用过。
Windows消息机制?那是什么?
但上个月,因为工作需要------我要同时管理20多个交易软件(迅投、快期、券商客户端......),每天早上登录就要花15分钟------我决定尝试用AI来"写"一个Windows桌面自动化工具。
结果让我自己都震惊了。
一个Web开发者的尴尬
说实话,我写过的代码少说也有十几万行了。在Web领域,我不敢说精通,但至少算个熟手。
但面对Windows桌面开发,我的知识储备几乎是零:
- 怎么做一个系统托盘图标?不知道
- 怎么注册全局热键(就算窗口不在焦点也能响应)?不知道
- 怎么找到另一个程序的窗口、往里面填内容、点按钮?完全没概念
我甚至不知道"UI Automation"这个词。
这种感觉很奇怪------明明每天都在写代码,但换了一个赛道,突然就变成了"小白"。
为什么选择AI?
如果是以前,我可能会这样做:
- 花一周时间学C#基础
- 再花一周学WinForms/WPF
- 再花一周研究Windows API和自动化
- 然后开始写,边写边踩坑,大概一个月能出个粗糙版本
但我不想等一个月。
而且说实话,我也不想花时间去学那些我可能只用一次的技术------我的主业是Web,我不想为了一个工具"转行"。
于是我想:能不能让AI帮我写这些我不懂的部分?我只负责架构和整合?
事实证明,完全可以。
AI帮我填平了"知识鸿沟"
第一天:从托盘图标开始
我的第一个问题是:"用Python写一个Windows系统托盘应用,支持全局热键。"
AI给出了完整的代码,用了pystray做托盘、keyboard做热键。
我复制、运行。
一个图标出现在右下角。
右键有菜单,按Ctrl+Alt+1有反应。
说实话,那一瞬间我很兴奋。 不是因为代码有多难------这段代码放Web领域,我闭着眼睛都能写------而是因为它跑在"我不熟悉的世界"里,而且跑通了。
AI帮我跨过的第一个坎,不是技术难度,而是心理门槛。它证明了:我不需要懂Win32,也能写出Win32程序。
第二天:最头疼的"窗口自动化"
核心功能:启动一个外部程序(比如"长城证券交易端"),等它加载完,找到账号输入框、密码输入框,填进去,再点登录按钮。
这涉及几个我从没接触过的东西:
- 进程启动与等待
- 窗口句柄查找
- 控件识别与操作
- 超时与异常处理
我把需求拆开,一个一个问AI:
"怎么用Python启动一个exe,并等待它的窗口出现?"
AI给了subprocess.Popen + pywinauto的示例。
"怎么通过窗口标题找到对应的窗口?"
AI给了Application(backend="uia").connect(title="xxx")。
"怎么往文本框里填内容?"
AI给了window.Edit.type_keys("账号")。
每个问题,AI都给出了可运行的代码。我只需要把它们拼起来。
最让我意外的是:AI不仅给了代码,还会主动提醒我一些"我不知道我不知道"的事情。
比如我让它写"点登录按钮",它除了生成点击代码,还会提醒我:登录后可能需要等待主界面出现、可能需要关闭公告弹窗、可能需要处理登录失败的提示......
这些东西,如果我自己去踩坑,可能要好几天才能全部遇到。
第三天:打包成真正的"Windows软件"
最后一步:把Python脚本打包成.exe,让同事也能用------他们不可能装Python环境。
这又是一个我不熟悉的领域。
我问AI:"怎么打包成单个exe文件,带图标,不显示控制台窗口?"
AI给了PyInstaller的完整命令,还教我写build.spec配置文件,甚至告诉我去哪里下载UPX来压缩体积。
打包成功的那一刻,我双击生成的KeyboardGenie.exe------
一个独立的、有图标的、装在系统托盘的Windows软件,出现在我的桌面上。
我,一个Web前端,做出了一个Windows桌面软件。
Web开发 vs Windows开发:AI到底帮我解决了什么?
作为一个有编程基础的人,我用AI做这个工具时,感受和纯小白完全不同。
我的优势在于:
- 我知道什么是"程序结构"、"配置文件"、"异常处理"
- 我能看懂AI生成的代码,知道它在干什么(虽然细节可能不懂)
- 我知道怎么拆解需求,把大问题变成一个个小问题去问AI
我的劣势在于:
- 我不知道Windows领域有什么"现成的轮子" ------Web里我要做某件事,脑子里马上能冒出三五个库。但Windows里,我连"用什么库"都不知道。
- 我不知道"最佳实践" ------Web里我知道怎么组织代码、怎么写才优雅。但Windows里,我写的代码可能很"丑陋",但AI帮我避开了明显的坑。
- 调试时,错误信息我看不懂------Web报错我一看就知道大概哪里出了问题。但Windows报错(比如"COMException"、"窗口句柄无效"),对我来说就是天书。这时候AI的价值就体现出来了:把错误信息扔给它,它告诉我原因和解决方案。
AI帮我填平的,不是"编程能力"的鸿沟,而是"领域知识"的鸿沟。
一些感触
1. 编程的门槛在降低,但"思维"依然是核心
有人说"AI让编程变得不值钱",我不这么认为。
AI降低了"写代码"的门槛,但"拆解需求"、"设计架构"、"判断什么方案更合适"这些能力,依然值钱。
在这个项目里,我虽然一行核心代码都没写,但以下工作是我做的:
- 判断用Python而不是C#(因为我对Python更熟)
- 设计配置文件结构(YAML,跟Web习惯一致)
- 拆解20多个软件的登录流程,找出共性
- 判断什么时候该用"控件识别",什么时候该降级到"图像识别"
AI负责"怎么写",我负责"写什么"和"为什么这么写"。
2. AI是"领域翻译器"
对我来说,AI最大的价值不是"帮我写代码",而是把Windows领域的概念翻译成我能听懂的语言。
我问:"怎么找窗口?"AI不直接扔代码,而是解释:Windows里每个窗口都有标题和类名,可以用find_window根据这些信息去找。
这个"翻译"过程,帮我快速建立了心智模型。
3. 交叉领域是AI的"甜蜜点"
Web开发转Windows开发,以前是个很大的跨度。你要学的东西太多,以至于很多人直接放弃。
但AI把这个跨度缩小了。
你不需要成为Windows专家,你只需要知道"我要做什么",AI帮你填充中间的空白。
AI让我可以在"保持主业不变"的前提下,快速进入另一个领域,解决实际问题。
这个工具现在怎么样了?
说实话,它还不完美。
- 有些软件的登录框控件识别不稳定
- 处理异常情况(网络超时、软件崩溃)还不够智能
- 配置界面还很粗糙
但它在持续改进。
每次遇到新问题,我就去问AI:"如果窗口没出现怎么办?""如果账号密码填错了怎么重试?"
AI给出方案,我集成进去。
这就像有了一个24小时在线的、耐心的、知识渊博的导师。 而且这个导师从不嫌弃你问的问题"太基础"。