7

我的目标是为我的应用程序编写一个 Visual Studio 插件 (a VSPackage) Java。我想知道是否可以在一个实例中查看一些JPanels ,或者更确切地说是一个.System.Windows.FormsMicrosoft.VisualStudio.Editor

我在想一个小程序,但我几乎被困在那里......

将 Swing 组件流式传输为 JPEG 并在表单中显示它是一个适用的想法吗?

编辑:

我真的很感激那些比“是”/“否”/“你为什么要这样做?”的答案。我下定决心要以这种方式工作,所以我要求:

  • 实现我的目标的详细解决方案,或者,
  • 关于我的方法应该是什么的好见解/想法,或者,
  • 彻底解释为什么无法实现。

  • 4

    1 回答 1

    6

    ( ) 勇士之道

    1. 从您的扩展加载 JVM(使用 jvm.dll)。
    2. 实现您自己的 Applet 容器。像这样的AppletViewer
    3. 将 Applet Container 放入您的本机表单中。这很难,有办法获得 Applet Container HWND(在 Java Swing 中,你如何获得对窗口的 Win32 窗口句柄 (hwnd) 引用?),但我不确定一个简单的SetParent能否解决问题。
    4. 加载您的小程序。

    ( ) 大师之道

    1. 像浏览器一样使用NPAPI/NPRuntime
    2. 加载 npjp2.dll Java 插件。
    3. 加载您的小程序。

    (X) 采用的解决方案是:

    1. 在另一个进程(Java 的标准)中使用 JVM 运行用 Java(如 Applet)编写的 VS 插件部分。
    2. 获取HWND使用FindWindow(Win32 API)。
    3. 使用SetParent(Win32 API) 和MoveWindow(Win32 API) 停靠窗口并调整其大小。

    我可以将其命名为“最简单的方式”,但在另一个进程中运行 Java 会给您带来更高的稳定性,因此这是“可行的方式”。我唯一担心使用来自另一个进程的窗口是,在 Java 中处理 Windows 消息的线程可能会干扰 Visual Studio。但就我所见,没有什么好害怕的。

    :-)

    于 2013-07-16T06:03:08.857 回答