| 修订版本 | 更新时间 | 更新说明 | 
|---|---|---|
| 10 | 22天19小时前 | 问题分析 原来的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() 方法: 在刷新方法列表中增加了新的快速方法 保持了原有的容错机制,如果快速方法失败还会尝试其他方法 现在,当系统繁忙时,程序会首先尝试原有的可靠但可能较慢的方法,如果耗时过长,则会使用新的快速刷新方式,从而确保在各种情况下都能快速响应用户的操作。 这个修改无需您进行任何额外操作,已经直接应用到了您的代码中。 | 
| 9 | 2025-09-30 12:18 | 更新使用C#代码,避免PS1弹窗问题,问题,速度不如设置切换快,暂时没有找到设置内的切换方法 | 
| 8 | 2025-09-30 11:05 | 最近接触了Windows API,修改脚本使用Windows API刷新资源管理器 | 
| 7 | 2024-04-16 09:05 | 名称变更 | 
| 6 | 2024-04-13 21:24 | 管理员身份运行忘记取消了,取消一下 | 
| 5 | 2024-04-11 14:48 | 之前直接操作主题导致系统深色主题不能生效,加上重启资源管理器后重启非常缓慢,经过和GPT讨论过后优化使用主题切换模式。 | 
| 4 | 2024-04-10 12:07 | 更新代码使用PowerShell 代码脚本,这回砍刀部不会动手了吧 | 
| 3 | 2022-10-06 22:12 | 更新系统默认主题,防止任务栏图标色彩不统一,可自行修改代码自定义主题 | 
| 2 | 2021-12-30 13:36 | 新增透明效果设置 | 
| 1 | 2020-09-07 15:17 | 更新WScript.CreateObject为CreateObject,精简代码快那么一丢丢 | 
| 0 | 2020-09-07 15:04 |