C\C++改变鼠标样式:用SetClassLong与LoadCursor打造自定义HCURSOR
1. 从窗口里那个不听话的鼠标指针说起做 Windows 桌面工具或者小游戏的时候鼠标指针往往是最容易被忽略、又最容易出戏的一环。默认的白色箭头放在一个深色主题的绘图工具里就像穿西装踩了双拖鞋。你想把它换成十字准星、换成画笔、换成自定义的.cur文件结果发现SetCursor在WM_MOUSEMOVE里疯狂调用还是会被系统默认箭头覆盖或者光标只在客户区生效、一移到标题栏就变回箭头。这个问题的本质是Windows 的光标有两层。一层是窗口类光标class cursor由WNDCLASS::hCursor注册时指定系统在窗口没有自己处理WM_SETCURSOR时用它来绘制另一层是运行时通过SetCursor临时设置的光标它会在每次鼠标移动、窗口重绘时被系统重新覆盖回类光标。所以很多人写了SetCursor(hcur)却发现光标闪一下就没了就是因为没有拦截WM_SETCURSOR或者没有从根上改掉类光标。SetClassLong就是用来从根上改类光标的。它直接修改窗口类结构体里的GCL_HCURSOR字段改完之后只要窗口没有主动SetCursor系统就会一直用你设置的这个HCURSOR。配合LoadCursor加载系统内置光标、LoadCursorFromFile加载自定义.cur文件就能实现「整个窗口范围内光标样式统一替换」的效果。这篇文章面向的是需要为工具软件、绘图程序、游戏界面定制鼠标指针的 C/C 开发者。我会把资源加载、类光标替换、生效范围验证、恢复时机、以及几个真实踩过的坑比如SetClassLong在 64 位下的指针截断问题完整讲一遍代码可以直接复制进你的WinMain或者窗口初始化流程里跑起来。适合谁已经能用 Win32 API 创建窗口、但对光标机制一知半解的初中级开发者也适合用 MFC、Duilib 这类框架但想深入底层改光标的同学。2. 前置准备TaoToken 与开发环境怎么搭在动手写代码之前先把两件事理清楚一是编译环境二是如果你打算在开发过程中用大模型辅助写 Win32 代码、查 API 文档、排查编译错误怎么把工具链接好。编译环境这块Windows 下写 Win32 程序最省事的是 Visual Studio社区版免费新建「Windows 桌面应用程序」或者空项目都行链接器会自动带上user32.lib、gdi32.lib。如果你习惯命令行MinGW-w64 也可以编译时手动加-luser32 -lgdi32。我实测下来 VS 2022 对SetClassLongPtr的宏展开最友好后面讲 64 位兼容时会提到为什么这点重要。关于 AI 辅助开发我平时会用 TaoToken 这个平台来统一管理模型调用。它的定位是给开发者提供一个聚合式的模型 API 入口你可以在一个控制台里拿到 Key、切换不同模型、查看用量不用在多个厂商后台之间来回跳。对于写 Win32 这种「API 细节多、报错信息晦涩」的场景有个能随时问的模型确实省时间——比如SetClassLong返回 0 到底是失败还是原来的值就是 0这种问题直接问比翻 MSDN 快。如果你只是想先试试模型对话能力可以直接打开模型对话页面把一段编译报错贴进去让它解释。地址是https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentsetclasslong_cursor如果你打算长期在编码过程中用 Agent 模式比如让模型直接读你的工程文件、改代码那更适合开一个 Coding Plan它按周期计费比按 token 单次调用划算https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentsetclasslong_cursor拿到 Key 之后在控制台里可以管理所有 API Key建议给每个项目单独建一个方便排查问题时定位https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentsetclasslong_cursorAPI Key 的创建入口在这里https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentsetclasslong_cursor接口的 Base URL 是https://taotoken.net/api这个地址在配置任何兼容 OpenAI 协议的客户端时都会用到。如果你用的是 Claude Code 这类工具它的接入文档在这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentsetclasslong_cursorClaude Code 的 Anthropic 兼容接入说明单独有一页https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentsetclasslong_cursor把环境准备好之后我们就可以进入正题了。下面所有代码都基于纯 Win32 API不依赖 MFC你可以在任何 Windows C 工程里直接用。3. 可复制配置LoadCursor 与 SetClassLong 的完整代码这一节是核心我会给出一个完整的、能编译运行的窗口程序重点在光标加载和类光标替换。先看最关键的几行再展开讲每个参数。3.1 加载光标的三种方式LoadCursor用来加载系统预定义光标第一个参数传NULL表示从系统资源加载第二个参数是IDC_*常量HCURSOR hCross LoadCursor(NULL, IDC_CROSS); // 十字准星 HCURSOR hHand LoadCursor(NULL, IDC_HAND); // 手型 HCURSOR hWait LoadCursor(NULL, IDC_WAIT); // 等待沙漏 HCURSOR hIBeam LoadCursor(NULL, IDC_IBEAM); // 文本输入如果要加载自己做的.cur文件用LoadCursorFromFile它接受文件路径返回HCURSORHCURSOR hCustom LoadCursorFromFile(TEXT(mouse.cur)); if (hCustom NULL) { // 加载失败通常是路径不对或文件格式不合法 DWORD err GetLastError(); // err ERROR_FILE_NOT_FOUND (2) 表示文件没找到 }注意LoadCursorFromFile的路径问题如果你传相对路径mouse.cur它相对于当前工作目录而不是 exe 所在目录。VS 里调试时工作目录默认是工程目录直接双击 exe 时工作目录是 exe 所在目录这两者经常不一致导致「调试能跑、发布就加载失败」。稳妥做法是用GetModuleFileName拼出 exe 目录再拼文件名TCHAR exePath[MAX_PATH]; GetModuleFileName(NULL, exePath, MAX_PATH); TCHAR* p _tcsrchr(exePath, TEXT(\\)); if (p) *(p 1) TEXT(\0); TCHAR curPath[MAX_PATH]; _stprintf_s(curPath, MAX_PATH, TEXT(%smouse.cur), exePath); HCURSOR hCustom LoadCursorFromFile(curPath);3.2 SetClassLong 替换类光标拿到HCURSOR之后用SetClassLong写入窗口类的GCL_HCURSOR字段HWND hwnd GetHwnd(); // 你的窗口句柄 SetClassLong(hwnd, GCL_HCURSOR, (LONG_PTR)hCustom);这里有个必须注意的坑在 64 位程序里HCURSOR是指针类型8 字节而SetClassLong的第三个参数是LONG32 位直接强转(long)hcur会把高 32 位截断导致光标句柄失效、设置无效甚至崩溃。正确做法是用SetClassLongPtr它的第三个参数是LONG_PTR在 32 位下是 32 位、64 位下是 64 位能完整容纳指针SetClassLongPtr(hwnd, GCL_HCURSOR, (LONG_PTR)hCustom);SetClassLongPtr在user32.lib里头文件是windows.h。如果你用的是老编译器没有这个符号可以用宏SetClassLongPtr在 32 位下自动映射到SetClassLong但现代 VS 都直接支持。3.3 完整可运行示例下面是一个最小可运行的 Win32 程序窗口创建后把类光标换成自定义.cur如果加载失败则回退到系统十字光标#include windows.h #include tchar.h HCURSOR g_hCursor NULL; LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_SETCURSOR: // 只在客户区强制使用我们的光标非客户区标题栏、边框保持系统默认 if (LOWORD(lParam) HTCLIENT) { SetCursor(g_hCursor); return TRUE; } break; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); } int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE, LPTSTR, int nCmdShow) { // 1. 加载光标 TCHAR exePath[MAX_PATH]; GetModuleFileName(NULL, exePath, MAX_PATH); TCHAR* p _tcsrchr(exePath, TEXT(\\)); if (p) *(p 1) TEXT(\0); TCHAR curPath[MAX_PATH]; _stprintf_s(curPath, MAX_PATH, TEXT(%smouse.cur), exePath); g_hCursor LoadCursorFromFile(curPath); if (g_hCursor NULL) { g_hCursor LoadCursor(NULL, IDC_CROSS); // 回退 } // 2. 注册窗口类hCursor 先给个默认值 WNDCLASS wc { 0 }; wc.lpfnWndProc WndProc; wc.hInstance hInst; wc.lpszClassName TEXT(CursorDemoWnd); wc.hCursor LoadCursor(NULL, IDC_ARROW); RegisterClass(wc); // 3. 创建窗口 HWND hwnd CreateWindow(TEXT(CursorDemoWnd), TEXT(光标替换演示), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInst, NULL); // 4. 替换类光标关键一步 SetClassLongPtr(hwnd, GCL_HCURSOR, (LONG_PTR)g_hCursor); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); MSG msg; while (GetMessage(msg, NULL, 0, 0)) { TranslateMessage(msg); DispatchMessage(msg); } return (int)msg.wParam; }编译命令MinGW-w64g cursor_demo.cpp -o cursor_demo.exe -mwindows -luser32 -lgdi32VS 里直接新建空项目把代码贴进main.cpp确保字符集设置和_tWinMain匹配用 Unicode 字符集时_tWinMain会展开成wWinMain没问题。3.4 关于 WM_SETCURSOR 的补充有人会问既然SetClassLongPtr已经改了类光标为什么还要在WM_SETCURSOR里再SetCursor一次原因是类光标只在窗口没有处理WM_SETCURSOR时生效。一旦你的窗口因为某些操作比如子控件、拖拽触发了WM_SETCURSOR并且DefWindowProc处理了它系统会重新用类光标绘制——这本来是对的。但如果你在别处调用过SetCursor改了光标类光标就被临时覆盖了。在WM_SETCURSOR里显式SetCursor(g_hCursor)并返回TRUE可以保证客户区光标始终是你想要的那个不受其他SetCursor调用干扰。这是最稳的写法。4. 验证请求与成功结果光标到底在哪些区域生效代码写完编译运行接下来要验证的是「生效范围」和「恢复时机」。这两个点很多人没测清楚导致上线后用户反馈「光标只在中间那块变、移到边上就变回箭头」。4.1 生效范围测试运行上面的程序把鼠标在窗口里移动观察这几个区域区域预期光标说明客户区中央自定义光标WM_SETCURSOR命中HTCLIENT标题栏系统箭头非客户区DefWindowProc处理窗口边框可拖拽双向箭头系统根据 hit test 结果决定最小化/最大化/关闭按钮系统箭头非客户区菜单栏如果有系统箭头非客户区如果你希望整个窗口包括标题栏都用自定义光标那WM_SETCURSOR里就不能只判断HTCLIENT要去掉那个条件直接SetCursor(g_hCursor); return TRUE;。但这样标题栏的拖拽、边框的缩放光标提示就没了用户体验会变差一般不推荐。4.2 恢复时机「恢复」指的是什么时候光标变回系统默认。有三种情况第一种窗口失去焦点、鼠标移到别的程序上光标自然由那个程序控制跟你无关。第二种你的程序主动调用SetCursor(LoadCursor(NULL, IDC_ARROW))这会临时覆盖但下次WM_SETCURSOR又会变回来。第三种窗口销毁类光标随窗口类一起失效如果你注册的类没被注销理论上还在但窗口没了就无所谓了。真正需要注意的是多窗口场景如果你用同一个窗口类创建了多个窗口SetClassLongPtr改的是类的光标所有用这个类创建的窗口都会受影响。如果你只想改某一个窗口要么给每个窗口注册独立的类要么在WM_SETCURSOR里根据hwnd判断。4.3 用 Spy 验证VS 自带 Spy在「工具」菜单里可以实时查看窗口的类信息。打开 Spy找到你的窗口右键「属性」在「类」标签页里能看到hCursor字段的值。设置前后对比一下如果值变了说明SetClassLongPtr生效了。这是最直接的验证方式比肉眼观察靠谱。4.4 一个容易忽略的成功标志SetClassLongPtr的返回值是原来的值不是成功/失败标志。如果原来的类光标是IDC_ARROW的句柄返回值就是那个句柄如果原来没有设置为 0返回 0。所以你不能用「返回 0 就是失败」来判断。判断失败要看GetLastError但更简单的方法是设置完之后立刻GetClassLongPtr(hwnd, GCL_HCURSOR)读回来跟你设置的值比对SetClassLongPtr(hwnd, GCL_HCURSOR, (LONG_PTR)g_hCursor); HCURSOR check (HCURSOR)GetClassLongPtr(hwnd, GCL_HCURSOR); if (check ! g_hCursor) { // 设置失败 }5. 本篇常见错误排查从 401 到光标不生效这一节把我在实际项目里踩过的坑列出来对照真实报错和现象方便你快速定位。5.1 光标完全不生效还是系统箭头最常见的原因是SetClassLongPtr调用时机太早或太晚。必须在CreateWindow之后调用因为窗口句柄还不存在时没法设置。但也不能太晚——如果你在WM_CREATE里调用此时窗口类已经注册、窗口正在创建SetClassLongPtr可能作用在错误的类上。稳妥做法是在CreateWindow返回后、ShowWindow之前调用就像示例代码那样。另一个原因是 64 位下的指针截断。如果你用了SetClassLong(hwnd, GCL_HCURSOR, (long)hcur)在 64 位程序里hcur的高 32 位被丢掉设置进去的是个无效句柄系统会忽略它。改成SetClassLongPtr即可。5.2 LoadCursorFromFile 返回 NULL现象g_hCursor是 NULL回退到系统光标。原因通常是路径问题。用GetLastError看具体错误码ERROR_FILE_NOT_FOUND (2)文件没找到检查路径拼接。ERROR_INVALID_CURVE (1913)或类似.cur文件格式不合法。注意.cur和.ico格式不同不能直接把.ico改名成.cur。用 Visual Studio 的资源编辑器或者在线工具生成标准.cur。路径里有中文LoadCursorFromFile的 ANSI 版本对中文路径支持不好用 Unicode 版本LoadCursorFromFileW或者确保工程用 Unicode 字符集。5.3 编译报错 SetClassLongPtr 未定义如果你用的是很老的 SDK可能没有SetClassLongPtr。在windows.h之前定义_WIN32_WINNT为0x0500或更高#define _WIN32_WINNT 0x0500 #include windows.h或者直接用SetClassLong但确保是 32 位编译。5.4 光标在客户区闪烁现象光标在自定义和系统箭头之间快速切换。原因是WM_SETCURSOR里返回了FALSE或者没处理导致DefWindowProc又用类光标覆盖了一次。确保在HTCLIENT分支里SetCursor之后return TRUE。5.5 关于 API 调用报 401 / local proxy failed如果你在用 AI 辅助工具比如某些客户端调用模型接口时遇到401 Unauthorized通常是 API Key 没填对或者过期了。去控制台重新生成一个 Key确认请求头里的Authorization: Bearer key格式正确。local proxy failed一般是本地代理配置问题检查客户端的 Base URL 是否填成了https://taotoken.net/api不要多写或少写路径。reading choices这类报错通常是响应体解析失败可能是模型返回了非预期格式换个模型或者检查请求参数。5.6 光标资源释放LoadCursorFromFile加载的光标理论上在程序退出时系统会回收但如果你频繁加载比如每次鼠标进入窗口都加载一次会泄漏 GDI 对象。正确做法是加载一次、存成全局变量程序退出时用DestroyCursor释放if (g_hCursor) { DestroyCursor(g_hCursor); g_hCursor NULL; }注意LoadCursor(NULL, IDC_*)加载的系统光标不要DestroyCursor它们是共享资源销毁会导致其他程序出问题。6. 继续深入把光标逻辑接进你的工程到这里SetClassLongPtrLoadCursor/LoadCursorFromFile的完整链路已经跑通了。你可以把示例代码里的光标加载部分抽成一个函数在窗口初始化时调用一次然后在WM_SETCURSOR里统一处理。如果你在做的是绘图工具可以进一步做「工具切换光标」不同工具对应不同.cur切换工具时调用SetClassLongPtr换类光标同时SetCursor立即刷新。如果是游戏注意全屏模式下光标可能被隐藏需要配合ShowCursor和ClipCursor使用。开发过程中如果遇到 Win32 API 的疑难杂症或者想让模型帮你读一段 MFC 的光标处理代码可以用前面提到的模型对话入口把代码贴进去问。需要长期在工程里用 Agent 辅助改代码的Coding Plan 更合适。接口文档和 Key 管理都在控制台里Base URL 统一用https://taotoken.net/api。最后留一个实用技巧调试光标问题时把WM_SETCURSOR的lParam低字打印出来看看当前 hit test 返回的是什么值HTCLIENT、HTCAPTION、HTBORDER等这样就能精确知道光标在哪个区域被谁处理了。这个习惯帮我省过很多次瞎猜的时间。

相关新闻

DevExpress文档MCP Server实战:在Visual Studio里把AI文档问答接进TaoToken

DevExpress文档MCP Server实战:在Visual Studio里把AI文档问答接进TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 15:41:08 阅读更多 →
PyTorch中Stack与Concat的区别:维度操作实战解析

PyTorch中Stack与Concat的区别:维度操作实战解析

说到深度学习的张量操作,PyTorch、TensorFlow、NumPy 里最容易让人犯迷糊的,就是 Stack 和 Concat。我在写 PyTorch 系列笔记第 28 篇时,正好帮 A 同学排查一个数据加载器的报错,他把四张 [3,224,224] 的图直接 torch.cat 到一起&…

2026/10/17 15:41:08 阅读更多 →
技术动态 | OpenClaw Skill 做 RAG 的工程化落地:从检索切分到 LaTeX/TikZ 图表代码生成,TaoToken 统一 Key 打通实验链路

技术动态 | OpenClaw Skill 做 RAG 的工程化落地:从检索切分到 LaTeX/TikZ 图表代码生成,TaoToken 统一 Key 打通实验链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 15:40:07 阅读更多 →

最新新闻

跨平台SSL证书导入脚本:Windows与Linux批量部署指南

跨平台SSL证书导入脚本:Windows与Linux批量部署指南

简介:这份资源提供在Windows与Linux系统中导入SSL证书的自动化脚本,面向需要为Web服务配置HTTPS通信的运维人员与系统管理员。压缩包内共2个文件,分别为Linux平台使用的sh脚本与Windows平台使用的bat脚本,包体仅578B,轻…

2026/10/17 16:31:36 阅读更多 →
viewer.min.js图片查看器集成指南:从初始化到避坑实践

viewer.min.js图片查看器集成指南:从初始化到避坑实践

简介:viewer.min.js 是一款轻量级 JavaScript 图像查看器库,面向需要在前端实现图片缩放、旋转、平移等交互效果的前端开发者。资源包以 viewerjs-main 命名,共包含 177 个文件,整体打包 3.14MB,其中以 121 个 js 文件…

2026/10/17 16:31:36 阅读更多 →
信呼OA系统开源部署指南:中小团队低成本的协同办公方案

信呼OA系统开源部署指南:中小团队低成本的协同办公方案

简介:信呼协同办公OA系统v1.8.6提供了一套开源的企业办公自动化解决方案,适合中小型企业和研发团队使用,能够将流程审批、任务协作、日程管理、移动办公等常见需求整合到一个平台中。这个版本在之前基础上优化了系统稳定性和操作体验&#xf…

2026/10/17 16:31:36 阅读更多 →
Flutter蓝牙开发实战:协议设计、插件选型与跨平台适配

Flutter蓝牙开发实战:协议设计、插件选型与跨平台适配

1. 蓝牙协议在 Flutter 项目中的整体设计思路1.1 为什么要在移动端项目里引入蓝牙能力做移动端项目时间长了,总会碰到一类需求:设备不在云端,也不走 Wi-Fi,而是靠蓝牙近距离通信。比如智能手环同步步数、体脂秤回传数据、便携打印…

2026/10/17 16:31:36 阅读更多 →
油猴脚本从入门到实战:安装配置与高效使用指南

油猴脚本从入门到实战:安装配置与高效使用指南

1. 先搞懂油猴插件到底是什么说到油猴插件,很多人的第一反应是:听说过,但一直没搞懂。以为它是什么灰色地带的黑科技,或者觉得那是程序员才折腾的东西。今天把话说透,油猴插件/脚本就是一个运行在浏览器里的轻量小助手…

2026/10/17 16:31:36 阅读更多 →
TortoiseGit绿色对勾消失?从图标覆盖到注册表抢位的完整排查指南

TortoiseGit绿色对勾消失?从图标覆盖到注册表抢位的完整排查指南

那天我像往常一样打开资源管理器,突然发现整个工作目录的文件夹都变成了最普通的黄色小文件夹——TortoiseGit 的绿色对勾不见了。第一反应是仓库坏了,赶紧打开终端跑了个 git status ,结果文件状态一切正常,也没有任何报错。那…

2026/10/17 16:30:36 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →