日期:2014-05-20  浏览次数:20708 次

如何弹出程序到最前面。
如果已经有一个程序已经在运行,再次运行改程序时,将已经运行的改程序弹出至最前面,怎么做啊?最好详细点啊。

------解决方案--------------------
Java code
 private   void   runOnce()   { 
        String   s  =   "eclipse.exe "; 
        try   { 
            java.io.BufferedReader   id   =   new   java.io.BufferedReader(new   java.io. 
                    FileReader(ID_FILENAME)); 
            String   ss   =   id.readLine(); 
            if   (ss   !=   null) 
                s   =   ss; 
            id.close(); 
        } 
        catch   (Exception   e)   { 
            //System.out.println(e); 
        } 
        try   { 
            int   i   =   0; 
            java.lang.Process   p   =   java.lang.Runtime.getRuntime().exec( "Tlist   -s "); 

            InputStream[]   inStreams   = 
                    new   InputStream[]   { 
                    h.getInputStream(),   h.getErrorStream()}; 
            ConsoleTextArea   cta   =   new 
                    ConsoleTextArea(inStreams); 
            System.out.println(cta.toString()); 

            java.io.BufferedReader   in   =   new   java.io.BufferedReader(new   java.io. 
                    InputStreamReader(p.getInputStream())); 

            String   ss   =   " "; 

            while   (   (ss   =   in.readLine())   !=   null)   { 
                if   (ss.indexOf(s)   !=   -1)   { 
                    i++; 
                } 
            } 
            in.close(); 

            if   (i   >   1)   { 
                javax.swing.JOptionPane.showMessageDialog(this,   "程序已经运行! "); 
                //这里可以写打开eclipse,通过进程调用start()应该就可以了
            } 
        } 
        catch   (Exception   e)   { 
            javax.swing.JOptionPane.showMessageDialog(this,   "未找到Tlist程序或I/O错误! "); 
        } 
    }

------解决方案--------------------
避免重复启动,Java解决此类问题有两种通用做法:
1、启动后用写方式来锁定一个文件,这样第二次启动时因为无法锁定该文件所以就知道已经是重复启动了;
2、启动后监听一个约定的端口,同样第二个启动的程序就无法监听该端口了。


考虑到你还需要“将已经运行的改程序弹出至最前面”,所以建议你用方案二。

程序启动后:
1、尝试监听127.0.0.1的某端口,比如: 12345
2、如果监听失败,则向该端口发送“BringToTop”消息,退出;
3、如果监听成功,启动一个线程负责监听该端口,如果接收到BringToTop消息,则将激活窗口焦点。
------解决方案--------------------
http://goro.iteye.com/blog/812732

呵呵,希望对lz有帮助。
------解决方案--------------------
swing hacks里有这个技巧
------解决方案--------------------
楼主,利用中午睡觉时间整理了下,供你参考了:
http://blog.csdn.net/ldh911/article/details/8024629