首页
社区
课程
招聘
[分享]重启资源管理器和相关消息使用
发表于: 2025-8-10 14:21 648

[分享]重启资源管理器和相关消息使用

2025-8-10 14:21
648

有一些针对资源管理器的注册表设置,设置后,不能立即生效,所以只能试试 (重启资源管理器也不一定生效)“重启资源管理器”。


而我个人习惯,桌面图标(有100多个)是按自已习惯的位置放的,并不勾选“自动排列”的,因为自动排列”会重新排图标位置,对于我来说,就全乱了。按自已长期习惯放常用的桌标,能一下就找到。


近期做了一个功能,要“重启资源管理器”,所以为了让资源管理器先保存桌标位置,再自动退出。折腾了不少时间。主要是有一条定义 TM_ExitExplorer 的常量,不知当时为什么没有加上这条定义,后来相关文件没有了,只能自已想办法补这一条了:


我们都知,Explorer 定义的各种消息常量有2000多行, 比如:

  

  TM_BRINGTOTOP = (WM_USER + $152);


  TM_WARNNOAUTOHIDE = (WM_USER + $153); //警告没有自动隐藏


  TM_WARNNODROP = (WM_USER + $154);


  TM_NEXTCTL = (WM_USER + $155);


  TM_DOEXITWINDOWS = (WM_USER + $156); // 弹出 退出 WINDOWS 之类的


  // 原定义找不到,自已补一下,  WIN7 到 WIN11 测试通用,其它系统没有试

  TM_ExitExplorer = $5B4;  


  .....下面还有大量的定义,比如:


  TM_RAISEDESKTOP = (WM_USER + $179); //显示桌面


  // 这二条常量都可以刷新桌面, 上面和命令都能通用所有系统。除 TM_ExitExplorer 这条我自已补的

  FCIDM_REFRESH = (FCIDM_BROWSER_VIEW + $0020); 

  FCIDM_REFRESH_REAL = $0a220; 


  IDS_MH_CONNECT = (MH_ITEMS+FCIDM_CONNECT ); // 连接

  IDS_MH_DISCONNECT = (MH_ITEMS+FCIDM_DISCONNECT);  //断开连接


function MyReStartExplorer : Boolean;

var

  dwPID, dwErrorCode, dwWaitValue : DWORD;

  hTrayWnd : HWND;

  hProcess : THandle;

begin

  dwWaitValue:=0;

  hTrayWnd:=MyGetShell_TrayWnd; //相当于 FindWindowW('Shell_TrayWnd', nil)

  if hTrayWnd > 0 then

  begin

  GetWindowThreadProcessId(hTrayWnd, @dwPID);

  hProcess := MyOpenProcess(SYNCHRONIZE  or PROCESS_TERMINATE, dwPID, dwErrorCode);

  //通知 Explorer 触发保存托盘和桌面、TermSoundWindow、 DoExitExplorer 等

  MyPostMessage(hTrayWnd, TM_ExitExplorer, 0, 0);

    if hProcess > 0 then

    begin


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-8-12 19:57 被kagayaki编辑 ,原因:
收藏
免费 9
支持
分享
最新回复 (5)
雪    币: 6407
活跃值: (3946)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
2
最近关了双屏显示器后,再开任务栏就不见了,显示也怪怪的,只能每次重启explorer.exe
2025-9-1 07:58
0
雪    币: 4472
活跃值: (4275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看看,谢谢分享
2025-9-2 14:54
0
雪    币: 465
活跃值: (504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了
2025-9-4 03:14
0
雪    币: 2617
活跃值: (7204)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢分享
2025-9-4 08:07
0
雪    币: 4655
活跃值: (7453)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
hairuoai 最近关了双屏显示器后,再开任务栏就不见了,显示也怪怪的,只能每次重启explorer.exe
自已云看看,内部有很多MESSAGE给你控制任务栏位置和显示、隐藏的。
2025-9-5 15:44
0
游客
登录 | 注册 方可回帖
返回