Skip to content

Commit e0c9d9a

Browse files
committed
修复 恢复大图标视图
1 parent 094d1f5 commit e0c9d9a

1 file changed

Lines changed: 21 additions & 8 deletions

File tree

Form1.cs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ private void SaveDesktopViewToRegistry(bool useDetailsView, bool restartExplorer
107107
}
108108
else
109109
{
110-
// 大图标视图的完整标志值
111-
key.SetValue(BagsDesktopFFlags, 0x40000001, RegistryValueKind.DWord);
110+
key.SetValue(BagsDesktopFFlags, 0x40200024, RegistryValueKind.DWord); // 十进制1075839524
112111
key.SetValue("LogicalViewMode", 1, RegistryValueKind.DWord);
113112
}
114113
}
@@ -223,21 +222,28 @@ await System.Threading.Tasks.Task.Run(async () =>
223222
{
224223
// 应用视图设置
225224
SendMessage(hDesktopListView, LVM_SETVIEW, useDetailsView ? LV_VIEW_DETAILS : LV_VIEW_LARGEICON, 0);
226-
227-
// 对于详细信息视图,使用更强的确保策略
225+
226+
// 为详细信息视图添加额外的确保策略
228227
if (useDetailsView)
229228
{
230229
// 额外添加一次设置以确保生效
231230
await System.Threading.Tasks.Task.Delay(300);
232231
SendMessage(hDesktopListView, LVM_SETVIEW, LV_VIEW_DETAILS, 0);
233232
}
233+
// 为大图标视图也添加额外的确保策略
234+
else
235+
{
236+
// 额外添加一次设置以确保生效
237+
await System.Threading.Tasks.Task.Delay(300);
238+
SendMessage(hDesktopListView, LVM_SETVIEW, LV_VIEW_LARGEICON, 0);
239+
}
234240

235241
// 强制刷新
236242
ForceDesktopRefresh();
237-
243+
238244
// 给系统时间处理视图更改
239245
await System.Threading.Tasks.Task.Delay(1000);
240-
246+
241247
// 标记为已应用
242248
viewApplied = true;
243249
}
@@ -464,15 +470,22 @@ private void CheckAndApplySavedView()
464470
{
465471
// 应用视图设置
466472
SendMessage(hDesktopListView, LVM_SETVIEW, useDetailsView ? LV_VIEW_DETAILS : LV_VIEW_LARGEICON, 0);
467-
473+
468474
// 如果是详细信息视图,再额外设置一次以确保生效
469475
if (useDetailsView)
470476
{
471477
// 延迟一小段时间后再次应用
472478
System.Threading.Thread.Sleep(500);
473479
SendMessage(hDesktopListView, LVM_SETVIEW, LV_VIEW_DETAILS, 0);
474480
}
475-
481+
// 如果是大图标视图,也额外设置一次以确保生效
482+
else
483+
{
484+
// 延迟一小段时间后再次应用
485+
System.Threading.Thread.Sleep(500);
486+
SendMessage(hDesktopListView, LVM_SETVIEW, LV_VIEW_LARGEICON, 0);
487+
}
488+
476489
ForceDesktopRefresh();
477490
}
478491
};

0 commit comments

Comments
 (0)