ntwain/samples/NetCoreConsole/Program.cs

93 lines
3.1 KiB
C#
Raw Normal View History

using NTwain;
using System;
using System.Reflection;
2018-11-14 19:04:35 +08:00
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
2018-11-14 09:04:05 +08:00
try
{
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;
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:");
DataSource firstSrc = null;
2018-11-14 10:02:29 +08:00
foreach (var src in session.GetSources())
{
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();
var targetSrc = selectSrc ?? defaultSrc ?? firstSrc;
if (targetSrc != null)
{
TestThisSource(session, targetSrc);
}
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
}
private static void TestThisSource(TwainSession session, DataSource targetSrc)
{
Console.WriteLine($"Testing data source {targetSrc}");
Console.WriteLine();
targetSrc.Open();
var testStatus = session.GetStatus();
var testMessage = session.GetLocalizedStatus(ref testStatus);
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
}
}
}
}