您可以向Windows资源管理器发送信号以刷新系统托盘图标吗?
发布时间:2020-12-13 23:00:34 所属栏目:Windows 来源:网络整理
导读:这个问题困扰了我很长一段时间,这真的很烦人. 每次我在重新启动/重启后登录时,资源管理器都会花费一些时间来显示. 我已经采取了等待所有服务启动然后我登录的步骤,但它没有任何区别. 结果始终相同:即使应用程序已启动,某些图标也不会显示. 我已经挖了一些代
这个问题困扰了我很长一段时间,这真的很烦人.
每次我在重新启动/重启后登录时,资源管理器都会花费一些时间来显示. 我已经挖了一些代码,让一个应用程序“粘贴”在那里的一个图标,但是有一个API调用可以执行,所以资源管理器重新读取所有图标信息?像无效或重绘或类似的东西? 显然,看起来乔恩是对的,这是不可能做到的. 我遵循了Bob Dizzle和Mark Ransom代码并构建了这个(Delphi Code): procedure Refresh; var hSysTray: THandle; begin hSysTray := GetSystrayHandle; SendMessage(hSysTray,WM_PAINT,0); end; function GetSystrayHandle: THandle; var hTray,hNotify,hSysPager: THandle; begin hTray := FindWindow('Shell_TrayWnd',''); if hTray = 0 then begin Result := hTray; exit; end; hNotify := FindWindowEx(hTray,'TrayNotifyWnd',''); if hNotify = 0 then begin Result := hNotify; exit; end; hSyspager := FindWindowEx(hNotify,'SysPager',''); if hSyspager = 0 then begin Result := hSyspager; exit; end; Result := FindWindowEx(hSysPager,'ToolbarWindow32','Notification Area'); end; 但无济于事. 我甚至尝试过 InvalidateRect() 仍然没有表现. 还有其他建议吗?
看一下这篇博客文章:
REFRESHING THE TASKBAR NOTIFICATION AREA.我正在使用此代码刷新系统托盘以摆脱孤立的图标,它完美无缺.
博客文章内容丰富,并对作者发现其解决方案所采取的步骤进行了很好的解释. #define FW(x,y) FindWindowEx(x,NULL,y,L"") void RefreshTaskbarNotificationArea() { HWND hNotificationArea; RECT r; GetClientRect( hNotificationArea = FindWindowEx( FW(FW(FW(NULL,L"Shell_TrayWnd"),L"TrayNotifyWnd"),L"SysPager"),L"ToolbarWindow32",// L"Notification Area"),// Windows XP L"User Promoted Notification Area"),// Windows 7 and up &r); for (LONG x = 0; x < r.right; x += 5) for (LONG y = 0; y < r.bottom; y += 5) SendMessage( hNotificationArea,WM_MOUSEMOVE,(y << 16) + x); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows NAP操作系统兼容性
- 阻止Windows服务管理器停止服务c#
- windows安装memcached提示failed to install service or se
- 如何使Emacs dired模式在Windows中显示unicode字符?
- 如何在Windows 7上启用dhcp客户端的调试
- Windows Phone 8 – Phonegap条码扫描器不识别Windows手机上
- <Windows> C/C++获取编译时间
- date – 检查文件是否在过去xx天后被修改
- windows-10 – 有没有办法使用GUI管理Windows 10上的QLogic
- windows-server-2003 – 低磁盘空间电子邮件警报
推荐文章
站长推荐
- windows-server-2003 – 如何抢救RAID配置?
- Windows 7上的内联函数的doParallel问题(适用于L
- DSAPI+DS控件库 Windows7风格控件演示
- windows-server-2003 – 如何重建全局目录?
- windows-7 – Windows 7:从一台计算机拒绝访问一
- 如何在Windows bat中获取某些适配器的默认网关?
- 窗口 – 如何知道窗口是否具有焦点? (Win32 API
- Windows10配置php环境(thinkphp5.0) Wampserve
- 使用在Wix中创建的x86 mai包写入注册表的x64部分
- 在程序中修改IP win7 winXP(参考1)
热点阅读