【问题标题】:Get FilePath of Windows Explorer Context Menu (Right-click menu) to Java将 Windows 资源管理器上下文菜单(右键菜单)的 FilePath 获取到 Java
【发布时间】:2014-04-08 17:03:57
【问题描述】:

假设我已经创建并添加了一个新条目到 Windows 资源管理器右键单击菜单(上下文菜单),方法是添加一个指向用 C++ 编写的 .exe 的注册表项,它只读取并返回单击的文件名文件。

是否可以将此文件名获取到已经运行的 Java 应用程序?

我曾想过使用 JNI,但是否可以从原生 C++ 程序调用已经运行的 Java 应用程序的方法?

有人知道如何解决这个问题吗?有没有可能有纯Java解决方案?

非常感谢。

编辑:是否可以调用已经运行的 JVM 的现有方法?然后我可以创建一个 C++ 程序来侦听右键单击并将该 .exe 注册到上下文菜单的注册表项中。在 C++ 程序中,我可以调用一个注入到已经运行的 JVM 中的 dll。 dll 可以调用 Java 方法并将单击的文件路径提交给 Java。有这种可能吗?

【问题讨论】:

  • 好的,我实现了以下目标:我创建了一个与注册表项(上下文菜单/右键单击菜单)链接的 C++ 程序。如果用户单击文件,则文件路径(命令行参数)被传输到程序。在程序内部,加载了一个 dll 并将文件路径传输到 dll 中定义的方法,该方法只打印文件路径。我现在想要实现的是调用已经运行的 Java 程序的方法(在 dll 中)并将文件路径传输到 Java 方法而不是打印它。你有什么建议吗?谢谢。

标签: java java-native-interface contextmenu filepath


【解决方案1】:

您可以通过套接字连接连接到已经运行的 Java 程序,或者将值存储到 C++ 应用程序和 Java 应用程序都可以访问的某种数据库中。

除了我的建议,here's a stackoverflow post that talks about communicating to a Java program already running without the Java program making the initial communication

【讨论】:

  • 您好,感谢您的回复。它是一个本地 Java 程序,因此我认为套接字连接不是解决该问题的最佳方法。难道没有另一种方法来检测文件的右键单击并将单击的文件名获取到Java(Windows 7 64bit)吗?注射方法是唯一的可能吗?
  • 对不起,我不知道。我不知道微软为 Windows 资源管理器提供的 API,但我想任何解决方案都必须从本机代码开始,即使是 Java 解决方案在技术上也会有部分解决方案仍在使用 JNI 或其他一些本机代码意味着我会想想。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
相关资源
最近更新 更多