【问题标题】:windows explorer context menu in javajava中的Windows资源管理器上下文菜单
【发布时间】:2012-07-03 05:50:17
【问题描述】:

考虑一个简单的应用程序,即显示文件列表。我想显示上下文菜单,当用户单击文件或文件夹时,就像用户在 Windows 资源管理器中单击鼠标右键(打开、重命名、编辑等)一样。我不想创建自己的上下文菜单,我想显示 windows os 上下文菜单,可能使用某种 winapi。这应该只适用于 Windows 机器。

是否可以使用 Swing 或 SWT 或任何其他 UI 控件来实现?

【问题讨论】:

  • java.awt.Desktop 类可以提供使用默认应用打开/编辑的能力。对于重命名/复制/删除,请参阅java.io.File 类或 Java 7 中与文件相关的新 API。请注意,我猜这种能力将是 .Net 中的 2-3 行代码。如果只针对 Windows,您应该考虑使用它。
  • Raymond Chen 写了一个eleven part series 解释如何在 C/C++ 中做到这一点。这真的不简单。
  • 继续 @arx 所说的,一旦你获得了 C/C++ 代码以便为 Windows 资源管理器做出贡献,那么如果你想要你的业务逻辑在 Java 中,你'必须启动 Java 运行时,然后使用一些 COM 或其他东西来来回获取消息。欢乐时光!
  • 问了类似的问题here

标签: java swing winapi swt contextmenu


【解决方案1】:

这个 MSDN article 解释了它是如何完成的:

Windows 资源管理器调用文件夹对象的IShellFolder::GetUIObjectOf 来请求其中一个对象的接口......当用户右键单击一个对象时,Windows 资源管理器会请求一个IContextMenu 接口。

在 C here 中有完整的源代码示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多