有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将参数传递给已经运行的nsis java启动器

我正在使用nsis启动我的java应用程序。我想在应用程序启动后显示一个窗口。我可以像这样在启动java应用程序时传递一个命令行参数

OutFile "Test.exe"
....
ExecWait javaw.exe -jar myapp.jar
SectionEnd

现在,如果调用了nsis启动器的另一个实例,我想显示已经运行的java应用程序的默认窗口。为此,我需要向java应用程序传递一个参数。为了实现这一点,我必须将参数传递给已经运行的实例的cmd窗口(NSIS内部使用)

我将如何做到这一点


共 (1) 个答案

  1. # 1 楼答案

    我不确定我是否理解正确,但您可以使用this example为nsis安装程序创建互斥锁。这里的例子将把已经运行的安装程序放在前面,如果你知道它的句柄或标题,你可以对它稍加修改,把正在运行的java窗口放在前面

         System::Call "kernel32::CreateMutexA(i 0, i 0, t 'my_mutex') i .r0 ?e"
         Pop $0
         StrCmp $0 0 launch
         FindWindow $1 "my window class" "my window title"
         IntCmp $1 0 bring_front end
         bring_front:
         System::Call "user32::SetForegroundWindow(i r1) i."
         end:
         Abort
         launch:
    

    如果你有Spy++(微软Visual Studio附带),你可以找到java应用程序的窗口类