2018-11-11 05:34:57 +08:00
|
|
|
|
using NTwain;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
2018-11-14 19:04:35 +08:00
|
|
|
|
namespace ConsoleApp
|
2018-11-11 05:34:57 +08:00
|
|
|
|
{
|
|
|
|
|
class Program
|
|
|
|
|
{
|
|
|
|
|
static void Main(string[] args)
|
|
|
|
|
{
|
2018-11-14 09:04:05 +08:00
|
|
|
|
try
|
2018-11-11 05:34:57 +08:00
|
|
|
|
{
|
2018-11-14 09:04:05 +08:00
|
|
|
|
var config = new TwainConfigBuilder()
|
|
|
|
|
.DefineApp(Assembly.GetExecutingAssembly())
|
|
|
|
|
.Build();
|
2018-11-14 10:15:52 +08:00
|
|
|
|
|
2018-11-14 09:04:05 +08:00
|
|
|
|
Console.WriteLine($"App = {(config.Is64Bit ? "64bit" : "32bit")}");
|
|
|
|
|
Console.WriteLine($"Platform = {config.Platform}");
|
2018-11-14 10:02:29 +08:00
|
|
|
|
Console.WriteLine();
|
2018-11-14 08:30:58 +08:00
|
|
|
|
|
2018-11-14 09:04:05 +08:00
|
|
|
|
using (var session = new TwainSession(config))
|
|
|
|
|
{
|
|
|
|
|
session.PropertyChanged += Session_PropertyChanged;
|
2018-11-11 05:34:57 +08:00
|
|
|
|
|
2018-11-14 11:03:35 +08:00
|
|
|
|
if (session.Open(IntPtr.Zero) == NTwain.Data.ReturnCode.Success)
|
2018-11-14 09:04:05 +08:00
|
|
|
|
{
|
2018-11-14 10:02:29 +08:00
|
|
|
|
Console.WriteLine("Available data sources:");
|
2018-11-14 11:03:35 +08:00
|
|
|
|
|
|
|
|
|
DataSource firstSrc = null;
|
2018-11-14 10:02:29 +08:00
|
|
|
|
foreach (var src in session.GetSources())
|
|
|
|
|
{
|
2018-11-14 11:03:35 +08:00
|
|
|
|
if (firstSrc == null) firstSrc = src;
|
2018-11-14 10:02:29 +08:00
|
|
|
|
Console.WriteLine($"\t{src}");
|
|
|
|
|
}
|
|
|
|
|
Console.WriteLine();
|
2018-11-14 09:04:05 +08:00
|
|
|
|
|
2018-11-14 10:02:29 +08:00
|
|
|
|
var defaultSrc = session.DefaultSource;
|
|
|
|
|
Console.WriteLine($"Default data source = {defaultSrc}");
|
|
|
|
|
Console.WriteLine();
|
|
|
|
|
|
|
|
|
|
var selectSrc = session.ShowSourceSelector();
|
|
|
|
|
Console.WriteLine($"Selected data source = {selectSrc}");
|
|
|
|
|
Console.WriteLine();
|
2018-11-14 11:03:35 +08:00
|
|
|
|
|
|
|
|
|
var targetSrc = selectSrc ?? defaultSrc ?? firstSrc;
|
|
|
|
|
|
|
|
|
|
if (targetSrc != null)
|
|
|
|
|
{
|
2018-11-17 11:29:57 +08:00
|
|
|
|
TestThisSource(session, targetSrc);
|
2018-11-14 11:03:35 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("No data source to test.");
|
|
|
|
|
Console.WriteLine();
|
|
|
|
|
}
|
2018-11-14 09:04:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("ERROR: " + ex.ToString());
|
|
|
|
|
}
|
2018-11-14 10:02:29 +08:00
|
|
|
|
|
2018-11-14 19:04:35 +08:00
|
|
|
|
Console.WriteLine("----------------------------------");
|
2018-11-14 10:02:29 +08:00
|
|
|
|
Console.WriteLine("Test ended, press Enter to exit...");
|
|
|
|
|
Console.ReadLine();
|
2018-11-14 08:30:58 +08:00
|
|
|
|
}
|
2018-11-11 05:34:57 +08:00
|
|
|
|
|
2018-11-17 11:29:57 +08:00
|
|
|
|
private static void TestThisSource(TwainSession session, DataSource targetSrc)
|
2018-11-14 11:03:35 +08:00
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Testing data source {targetSrc}");
|
|
|
|
|
Console.WriteLine();
|
|
|
|
|
|
|
|
|
|
targetSrc.Open();
|
2018-11-17 11:29:57 +08:00
|
|
|
|
|
|
|
|
|
var testStatus = session.GetStatus();
|
|
|
|
|
var testMessage = session.GetLocalizedStatus(ref testStatus);
|
|
|
|
|
|
2018-11-14 11:03:35 +08:00
|
|
|
|
targetSrc.Close();
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-14 08:30:58 +08:00
|
|
|
|
private static void Session_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var session = (TwainSession)sender;
|
|
|
|
|
if (e.PropertyName == "State")
|
|
|
|
|
{
|
2018-11-14 09:04:05 +08:00
|
|
|
|
Console.WriteLine($"Session state changed to {session.State}");
|
2018-11-14 08:30:58 +08:00
|
|
|
|
}
|
2018-11-11 05:34:57 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|