2015-09-05 15 views
2

我想连接使用morena api和twain的锐利网络扫描器。如果扫描仪可以到达,但扫描仪不可用时,一切正常,jni库会打开一个选择扫描仪窗口。我认为它是双屏幕,我想禁用此屏幕。如果扫描仪不可达,我想抛出错误而不是打开选择设备窗口。当我停止应用程序,这个屏幕也关闭,所以我认为这取决于Java线程。问题是,如何在不停止整个程序的情况下停止该窗口的线程。我可以在另一个线程中运行main方法,并且我可以找到此线程ID,但是当我停止该线程时,它不会关闭选择设备窗口。如何杀死java派生的jni进程

import SK.gnome.morena.Morena; 
import SK.gnome.morena.MorenaException; 
import SK.gnome.morena.MorenaImage; 
import SK.gnome.morena.MorenaSource; 
import SK.gnome.twain.TwainManager; 
import SK.gnome.twain.TwainSource; 

import javax.swing.*; 

public class HelloWorld 
{ public static void main(String[] args) throws MorenaException 
    { 

    TwainSource[] list = null; 

    try { 
     list = TwainManager.listSources(); 
    } catch (Exception var4) { 
     list = null; 
    } 



    MorenaSource source= list[1]; 
    System.err.println("Selected source is "+source); 
    if (source!=null) 
    { source.maskUnsupportedCapabilityException(false); // Lesson 3 
     source.maskBadValueException(false);    // Lesson 3 
     source.setVisible(false);       // Lesson 2 
     source.setColorMode();       // Lesson 2 
     source.setResolution(300);      // Lesson 2 
     ((TwainSource)source).setUnits(TwainSource.TWUN_CENTIMETERS); 
     source.setFrame(0, 0, 7.8, 10.5); 
     System.err.println("Image resolution is "+source.getResolution()); 
     MorenaImage image=new MorenaImage(source); 
     System.err.println("Size of acquired image is " 
      +image.getWidth()+" x " 
      +image.getHeight()+" x " 
      +image.getPixelSize()); 
    } 
    Morena.close(); 
    } 
} 

enter image description here

回答

1

你永远不希望自己的窗口弹出?如果没有,您可以尝试TwainManager.getDefaultSource()而不是硬编码list[1]TwainManager.listSources()来构建您自己的选择或评估0结果并抛出自己的错误。

要使用TwainManager.getDefaultSource()

MorenaSource source = TwainManager.listSources(); 

见莫雷纳的TWAIN JTP Support获取更多信息。