将参数传递给已经运行的nsis java launcher

时间:2012-01-13 11:02:48

标签: java arguments nsis

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

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

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

我将如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确但您可以使用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 ++(Microsoft Visual Studio附带),您可以找到Java应用程序的窗口类。