我的程序在系统状态栏上添加了快捷图标,在我程序退出后,系统状态栏上的图标不自动删除,非得等我用鼠标移到图标上面才会变没有.怎样才能在程序退出后使系统状态栏上得图标自动删除.我的增加图标程序是:
ntida.cbSize :=sizeof(tnotifyicondataa);
ntida.Wnd :=handle;
ntida.uID :=100;
ntida.uFlags :=nif_icon+nif_tip+nif_message;
ntida.uCallbackMessage :=MY_MESSAGE;
ntida.hIcon :=Application.Icon.Handle ;
ntida.szTip :='WGL_3A线路录波后台分析系统';
shell_notifyicona(NIM_ADD,@ntida);
//setwindowlong(application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); //避免在任务栏中出现
setwindowlong(Application.Handle,GWL_EXSTYLE,not(getwindowlong(application.Handle,GWL_EXSTYLE)
or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW));删除图标程序是:
shell_notifyicona(NIM_DELETE,@ntida);
ntida.cbSize :=sizeof(tnotifyicondataa);
ntida.Wnd :=handle;
ntida.uID :=100;
ntida.uFlags :=nif_icon+nif_tip+nif_message;
ntida.uCallbackMessage :=MY_MESSAGE;
ntida.hIcon :=Application.Icon.Handle ;
ntida.szTip :='WGL_3A线路录波后台分析系统';
shell_notifyicona(NIM_ADD,@ntida);
//setwindowlong(application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); //避免在任务栏中出现
setwindowlong(Application.Handle,GWL_EXSTYLE,not(getwindowlong(application.Handle,GWL_EXSTYLE)
or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW));删除图标程序是:
shell_notifyicona(NIM_DELETE,@ntida);
shell_notifyicona(NIM_DELTE,@ntida);
就可以了.
还有我已经执行了下列程序
shell_notifyicona(NIM_DELTE,@ntida);
处理程序的OnDestroy消息, procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE,@ntida);
end;
仔细看,文档有part1和part2两部分,非常详细,结帖吧