java - 如何杀死派生自Java的jni进程

我想使用morena api和twain连接Sharp网络扫描仪。如果可以访问扫描仪,则一切正常,但是当无法访问扫描仪时,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();
  }
}


enter image description here

最佳答案

您是否想要窗口本身弹出?如果没有,您可以尝试使用TwainManager.getDefaultSource()而不是对list[1]进行硬编码,或者尝试使用TwainManager.listSources()建立自己的选择或评估0个结果并抛出自己的错误。

要使用TwainManager.getDefaultSource()

MorenaSource source = TwainManager.listSources();


有关更多信息,请参见Morena的TWAIN JTP Support

本文翻译自 https://stackoverflow.com/questions/32416857/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java java-native-interface twain morena


相关文章:

java - 休眠中的对象关系映射(ORM)级别是什么

java - 如何显示来自Latin-Extended-A字符集的字符串

java - 未使用“ nar-maven-plugin”编译的JUnit测试的本机代码

java - 在CentOS OpenJDK 1.8上哪里可以找到jni_md.h

java - 分布式jar中的JNI不满意的链接错误

java - Java中的Twain设备(扫描仪)控件

c# - .NET扫描API [关闭]

java - 使用HttpUrlConnection无法获得正确的标头响应代码

c++ - Python3或C / C ++:TWAIN接口

java - getImage()/ drawImage()使Java-Applet停止工作