大佬教程收集整理的这篇文章主要介绍了您可以向Windows资源管理器发送信号以刷新系统托盘图标吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
每次我在重新启动/重启后登录时,资源管理器都会花费一些时间来显示.
我已经采取了等待所有服务启动然后我登录的步骤,但它没有任何区别.
结果始终相同:即使应用程序已启动,某些图标也不会显示.@H_675_18@
我已经挖了一些代码,让一个应用程序“粘贴”在那里的一个图标,但是有一个API调用可以执行,所以资源管理器重新读取所有图标信息?像无效或重绘或类似的东西?@H_675_18@
显然,看起来乔恩是对的,这是不可能做到的.@H_675_18@
我遵循了Bob Dizzle和Mark Ransom代码并构建了这个(Delphi CodE):@H_675_18@
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;
但无济于事.@H_675_18@
我甚至尝试过@H_675_18@
InvalidateRect()
还有其他建议吗?@H_675_18@
#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资源管理器发送信号以刷新系统托盘图标吗?全部内容,希望文章能够帮你解决您可以向Windows资源管理器发送信号以刷新系统托盘图标吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。