2012-07-02 4 views
4

Рассмотрите простое приложение, отображающее список файлов. Я хотел бы отображать контекстное меню при щелчке пользователем файла или папки, так же, как при щелчке правой кнопкой мыши в Windows Explorer (открыть, переименовать, отредактировать и т. Д.). Я не хочу создавать собственное контекстное меню, я хочу показать контекстное меню windows os, возможно, используя какой-то winapi. Это должно работать только на машине Windows.контекстное меню windows explorer в java

Возможно ли достичь этого с помощью Swing или SWT или любых других элементов управления пользовательского интерфейса?

+0

Класс 'java.awt.Desktop' может предоставить возможность открывать/редактировать с помощью приложения по умолчанию. Для переименования/копирования/удаления см. Класс 'java.io.File' или новые API-интерфейсы, связанные с файлами в Java 7. Обратите внимание, что я думаю, что эта способность будет составлять 2-3 строки кода в .Net. Вы должны использовать его, если только нацеливаться на Windows. –

+1

Raymond Chen написал [одиннадцать частей серии] (http://blogs.msdn.com/search/searchresults.aspx?q=IContextMenu§ions=2905), объясняющий, как это сделать на C/C++. Это действительно не просто. – arx

+0

Чтобы понять, что сказал @arx, после того, как вы получили код C/C++, чтобы вы вносили вклад в Windows Explorer, тогда, если вам нужна ваша бизнес-логика на Java, вам нужно запустить Java а затем использовать некоторый COM или что-то, чтобы получать сообщения взад и вперед. Веселые времена! –

ответ

0

Это MSDN article объясняет, как это делается:

Проводник Windows вызывает, Windows Explorer объект папки IShellFolder::GetUIObjectOf запросить интерфейс для одного из объектов .... Когда пользователь щелкает правой кнопкой мыши объект запрашивает интерфейс IContextMenu.

В C here приведен полный пример исходного кода.

Смежные вопросы