Your comments
думаю что остался, возможно нужно будет выключить aero
сообщения о краше скорее всего и нет, но должно быть какой то системное сообщение типа repaint или типа того.
возможно эти обсуждения на stackoverflow подскажут куда копать
http://stackoverflow.com/questions/8333820/restoring-java-systray-icon-after-explorer-crashes
https://forums.oracle.com/forums/thread.jspa?threadID=2159870
http://syedgakbar.wordpress.com/2008/07/14/restore-notification-area-icon-after-explorer-crash/
тут по виндовым сообщениям и таксбару
http://msdn.microsoft.com/en-us/library/cc144179(VS.85).aspx#Taskbar_
тут решение для сишников
http://www.tek-tips.com/faqs.cfm?fid=5937
тут пишут, что в java такое не получится сделать, надо делать костыли
http://board.jdownloader.org/showthread.php?p=81757
или стартовать прогу заново и та, обнаружив запущенную копию, даст ей сигнал чтобы восстановить иконку (что мне лично кажется совсем костыльным костылем ))) )
либо тупо удалять/восстанвливать иконку в трее каждые несколько секунд - что более удовлетворительно, если не будет каких то побочных эффектов
Customer support service by UserEcho
если бы вы почитали ссылочку https://forums.oracle.com/forums/thread.jspa?threadID=2159870, то поняли, что проверка иконки в трее через getTrayIcons() не сработает - они после краша остаются на месте и проверка будет говорить что все ок, а в реальности иконки не будет.
по той же ссылке якобы нашли решение через reflections. хотя пожаловались на стабильность работы
try{
Field theField = TrayIcon.class.getDeclaredField( "peer" );
theField.setAccessible( true );
theField.set( myIcon, null );
Method theMethod = TrayIcon.class.getDeclaredMethod( "addNotify", new Class[]{} );
theMethod.setAccessible( true );
theMethod.invoke( myIcon, new Object[]{} );
} catch ( Throwable e ) {
LOGGER.error( "Could not restore system tray icon", e );
}
если это чем то не устроит, то думаю и правда - достаточно дергать иконку при каждом срабатывании глобального хоткея - к примеру ctrl+H (показать окно) или вообще на всех хоткеях. сделал попытку что то с прогой сделать - и иконка перерисовалась. но тогда нельзя будет определить запущена программа или нет ( для чего собственно иконка и нужна чаще всего)