怎么监视任务栏的改变
把下面的放倒你的窗体里面:
procedure wmsettingchange(var msg:TMessage);message wm_SETTINGCHANGE;
...
begin
if msg.lParam=1244276 then
showMessage('任务兰改变了!');
end;
////我先有了这个之后,其他的就不用我说了。
在很多情况下,资源管理器/桌面会出错然后重新出来桌面,如果你有一个托盘图标,重新创建桌面之后,你的托盘图标就会消失!如果要自动恢复托盘图标,可以利用任务栏创建消息来实现。
要获取任务栏创建的消息,可以这样:
var
s_uTaskbarCreated = 0;
然后在程序创建的时候:
s_uTaskbarCreated = RegisterWindowMessage(L"TaskbarCreated");
最后,在主程序的消息循环过程当中,利用case处理s_uTaskbarCreated 消息即可,类似下面:
MainWindowProc(var Msg:TMessage);
begin
....
case Msg.Message of
WM_CREATE: ....
WM_CLOSE: ....
else
if Msg.Message = uTaskbarCreated then
ReloadYourTrayIconProcess()
else
DefWindowProc(hwnd, uMsg, wParam, lParam)
end;
...
end;