【问题标题】:How to kill jni process which derived from java如何杀死从java派生的jni进程
【发布时间】:2015-09-05 19:21:33
【问题描述】:

我想使用 morena api 和 twain 连接夏普网络扫描仪。如果扫描仪可以访问,一切都很好,但是当扫描仪无法访问时,jni 库会打开一个选择扫描仪窗口。我认为它是 twain ds 屏幕,我想禁用此屏幕。如果无法访问扫描仪,我想抛出错误而不是打开选择设备窗口。当我停止应用程序时,这个屏幕也会关闭,所以我认为它取决于 java 线程。问题是,如何在不停止整个程序的情况下停止此窗口的线程。我可以在另一个线程中运行 main 方法,我可以找到这个线程 id,但是当我停止这个线程时,它并没有关闭选择设备窗口。

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();
  }
}

【问题讨论】:

    标签: java java-native-interface twain morena


    【解决方案1】:

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

    使用TwainManager.getDefaultSource()

    MorenaSource source = TwainManager.listSources();
    

    查看 Morena 的TWAIN JTP Support 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多