Уведомить ОС об открытии файла в Java

Мне было интересно, есть ли какая-то библиотека API для Java (Swing), которая позволяет вашей программе сообщать системе, что она только что открыла файл, чтобы она могла добавить его в последние документы пользователя для любой ОС (например, SHAddToRecentDocs Windows). Существует ли такая вещь? Примечание. Я не рассматриваю j7Goodies как решение.

Редактировать: рассматриваемый файл я уже открыл, и я не хочу, чтобы система открывала его. Я также отслеживаю последние документы в своей программе, я хочу знать, как сообщить системе, что я открыл ее, без того, чтобы система инструктировала программу по умолчанию открыть ее.


person BrainStorm.exe    schedule 21.03.2013    source источник
comment
Также было бы неплохо, если бы он мог устанавливать прогресс на своей кнопке... Это не имеет никакого смысла. Какая кнопка?   -  person jahroy    schedule 22.03.2013
comment
Я предполагаю, что ОС должна отслеживать последние документы пользователя. То, что вам нужно, — это API, который позволяет вам получать доступ к последним документам пользователя независимо от операционной системы.   -  person jahroy    schedule 22.03.2013
comment
Да, это было бы так. Я хотел бы сообщить ОС, что пользователь только что открыл этот файл. Что касается прогресса на его кнопке, это означает, что Java может сообщать ОС, как далеко она продвинулась в длительной операции, например, когда вы загружаете файл.   -  person BrainStorm.exe    schedule 22.03.2013
comment
Понятно. Я думал, вы хотите, чтобы Java сообщал об открытии нового файла. Не знал, что вы хотите использовать Java, чтобы сообщить системе, что файл был открыт. Спасибо за разъяснения. На какой платформе вы находитесь? Вы используете свинг?   -  person jahroy    schedule 22.03.2013
comment
Например, когда Firefox загружает файл в Win 7, вы видите индикатор выполнения на кнопке панели задач Firefox. Это то, что я имел в виду, но это не обязательно.   -  person BrainStorm.exe    schedule 22.03.2013
comment
Возможно, вы захотите отредактировать свой вопрос, включив в него такие детали. На самом деле люди никак не могли догадаться об этом, основываясь на вашем первоначальном вопросе. Вы также должны отредактировать теги, включив в них Swing. Я бы отредактировал их для вас, но вы до сих пор не подтвердили, что используете Swing. У вас будет гораздо больше шансов получить хороший ответ, если вы включите в свой вопрос как можно больше подробностей. В нынешнем виде (без подробностей, неуместных тегов, запутанного заголовка) этот вопрос, вероятно, не привлечет особого внимания.   -  person jahroy    schedule 22.03.2013


Ответы (1)


Класс java.awt.Desktop включает метод open(), который делает это в Mac OSX. Вы захотите протестировать его на других целевых платформах. Если вы не можете использовать эту функцию напрямую, это более раннее воплощение API может предложить подход.

При отсутствии лучшей реализации этот FileMenu можно использовать в приложении. Кроме того, рассмотрите один из механизмов сохранения, упомянутых здесь.

Приложение: Внутри java.awt.Desktop делегирует экземпляр специфичного для платформы java.awt.peer.DesktopPeer для каждой поддерживаемой платформы. Возможно, вы сможете использовать подход, принятый в существующих реализациях, для платформ, которые вы собираетесь поддерживать.

person trashgod    schedule 22.03.2013
comment
Desktop#open() делает это и в Windows 7. - person FThompson; 22.03.2013
comment
@Вулкан: Спасибо! Для тестирования на других платформах FileBrowser также выполняет Desktop#open(). - person trashgod; 22.03.2013
comment
Насколько я знаю, для этого нет общедоступного API; возможно, вы сможете найти конкретные реализации java.awt.peer.DesktopPeer для дальнейшего изучения. - person trashgod; 23.03.2013
comment
Хорошо, спасибо за вашу помощь. - person BrainStorm.exe; 25.03.2013