打开其他实例时,将正在运行的应用程序置于前面

时间:2011-12-09 13:19:57

标签: java desktop-application

我已将我的java应用程序作为单实例应用程序。我已经实现了File Lock系统。

如果应用程序已在运行,我想在前面显示正在运行的应用程序。我如何实现这一目标?我如何访问该应用程序的运行过程并显示它?

2 个答案:

答案 0 :(得分:1)

您要求的是依赖操作系统,但您始终可以拥有自己的实现来执行此操作。您的应用程序可以在某个端口上侦听您可以从应用程序的第二个实例发送的bring-to-front命令。

void main(String[] args){
   if(applicationAlreadyRunning){
     // Send bring-to-front message to running instance on a known port
     // and exit.
   }
}

当收到带来前方的消息时,您可以执行以下操作:

public void BringToFrontCommandReceived(){
    java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    myMainFrame.toFront();
                    myMainFrame.repaint();
                }
            });

}

答案 1 :(得分:1)

JWS不仅提供了x-plat SingleInstanceService,而且(来自内存)也会在toFront()上弹出应用newActivation(String[])。当然,如果它不是自动的,你可以明确地调用它。

这是demo. of the SIS