日夜模式

日夜模式 公开 已发布

七七7777 更新于 7天5小时前 | 3 | 101
如何安装动作?
当前审核状态:已发布
版本 10 2025/10/9 9:36:44 问题分析 原来的C#实现使用的是 SendMessageTimeout 方法,这是一种同步调用,会等待所有窗口处理完消息才会返回。当系统负载较重时,这个过程会变得很慢,导致用户感觉界面刷新有延迟。 解决方案 我添加了一个新的刷新方法 RefreshExplorerMethod1Fast(),它使用 PostMessage API 替代 SendMessageTimeout。这种方法的特点是: 非阻塞调用:PostMessage 将消息放入目标窗口的消息队列后立即返回,不会等待消息被处理 立即执行:无论系统负载如何,调用都会立即完成 系统范围通知:仍然能够有效地通知所有顶层窗口主题已更改 具体修改内容 添加了 PostMessage API 的导入声明: csharp [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)] private static extern bool PostMessage( IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); 实现了新的快速刷新方法 RefreshExplorerMethod1Fast(): 使用 PostMessage 发送 WM_SETTINGCHANGE 消息 正确处理了字符串参数的内存分配和释放 这是一种非阻塞调用,不会等待其他程序处理完毕 更新了 RefreshExplorer() 方法: 在刷新方法列表中增加了新的快速方法 保持了原有的容错机制,如果快速方法失败还会尝试其他方法 现在,当系统繁忙时,程序会首先尝试原有的可靠但可能较慢的方法,如果耗时过长,则会使用新的快速刷新方式,从而确保在各种情况下都能快速响应用户的操作。 这个修改无需您进行任何额外操作,已经直接应用到了您的代码中。
操作人 时间 分值 意见及建议 状态变更
CL 7天0小时前 (管理员审核) 已提交,待审核 已发布
*系统* 7天5小时前 (发布或更新动作) 已发布 已提交,待审核
版本 9 2025/9/30 12:18:40 更新使用C#代码,避免PS1弹窗问题,问题,速度不如设置切换快,暂时没有找到设置内的切换方法
操作人 时间 分值 意见及建议 状态变更
CL 15天4小时前 (管理员审核) 已提交,待审核 已发布
*系统* 16天2小时前 (发布或更新动作) 已提交,待审核 已提交,待审核