morena api と twain を使ってシャープのネットワークスキャナーに接続したい。スキャナーに到達できる場合はすべて問題ありませんが、スキャナーに到達できない場合、jni ライブラリはスキャナーの選択ウィンドウを開きます。twain ds 画面だと思います。この画面を無効にしたいです。スキャナーに到達できない場合は、デバイスの選択ウィンドウを開く代わりにエラーをスローしたいと考えています。アプリを止めるとこの画面も閉じてしまうので、Javaスレッドに依存していると思います。問題は、プログラム全体を停止せずにこのウィンドウのスレッドを停止するにはどうすればよいかということです。別のスレッドでメイン メソッドを実行でき、このスレッド 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();
}
}