jacob操作word,但是不知道什么情况,有一个word文档,会在极小概率下关闭不了,具体为什么关闭不了也不知道,于是导致再打开这个word时,总提示该word被锁定。
我的问题时,怎么才能在打开这个word之前,判断该word是否已经处于使用状态,如果是,则强行关闭。如果没有,则直接打开。

解决方案 »

  1.   

               ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word  
            try  
            {  
                
            }  
            catch (Exception e)  
            {  
                e.printStackTrace();  
            }  
            finally  
            {  
                app.invoke("Quit", new Variant[] {});  
            }  
    这样都不能关闭吗
      

  2.   

    项目中是使用  dispatch  操作的,如何才能判断他是否关闭?
      

  3.   


    import java.io.BufferedReader;   
    import java.io.InputStreamReader;   
    /**  
     * JAVA检测指定的进程是否在运行。  
     *   
     * 
     */  
    public class TestFindProcessOfExe {   
      public static void main(String[] args) {   
        System.out.println(findProcess("eclipse.exe"));   
      }   
      /**  
       * 检测程序。  
       *   
       * @param processName 线程的名字,请使用准确的名字  
       * @return 找到返回true,没找到返回false  
       */  
      public static boolean findProcess(String processName) {   
        BufferedReader bufferedReader = null;   
        try {   
          Process proc = Runtime.getRuntime().exec("tasklist /FI \"IMAGENAME eq " + processName + "\"");   
          bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));   
          String line = null;   
          while ((line = bufferedReader.readLine()) != null) {   
            if (line.contains(processName)) {   
              return true;   
            }   
          }   
          return false;   
        } catch (Exception ex) {   
          ex.printStackTrace();   
          return false;   
        } finally {   
          if (bufferedReader != null) {   
            try {   
              bufferedReader.close();   
            } catch (Exception ex) {}   
          }   
        }   
      }   
    }  
    杀进程吧...
      

  4.   

    杀进程有点麻烦了吧,而且还有许多其他地方操作wrod的,会不会把那些进程也杀了,现在我的想法是,能否判断该文档是否被使用。
      

  5.   

    还有 Dispatch 对象该怎么实例化,而且确保他在实例化时,不是又一次打开了那个文档,这个有办法实现吗?
      

  6.   

    楼主的结贴率 不敢恭维
    jacob 本来就不稳定。   可以试试 在调用word 打开方法之前 。 调用一个bat  bat里面杀死word进程。 
      

  7.   

    额,不好意思啊,关键是就问了没几个问题,而且问题都没有解决,所以还没有结贴。还有,jacob中关闭的方法都有哪些?还有一个Dispatch.call()的方法能否详细解释一下。
      

  8.   

    http://topic.csdn.net/u/20091228/12/11116a96-afa6-4d46-af95-c649b855c90c.html
    好久了 已经忘了。 而且现在基本舍弃这个东西了。 太不稳定了。 能不用就不用把。