Я использую Ntwain для сканирования некоторых документов с сканера Kodak i5850 в простом приложении C# Console. Я могу использовать библиотеку для подключения к сканеру и запустить сканирование, но мне также нужно настроить принтер на сканере, чтобы распечатать некоторые данные в документ. У сканера есть эта функциональность, но он требует, чтобы я установил некоторые нестандартные возможности Twain для его использования. В частности, я не уверен, как создать объект twcapability , который он требует - я хотел бы просто установить идентификатор CAP и значение напрямую, если это возможно. /> Это возможно с Ntwain (или какой -то другой библиотекой C#)? Если это так, пример будет высоко оценен. Спасибо! < /P>
Пример кода для простого сканирования: < /p>
static void Main(string[] args)
{
var appId = TWIdentity.CreateFromAssembly(DataGroups.Image, Assembly.GetExecutingAssembly());
var session = new TwainSession(appId);
if (session.Open() != ReturnCode.Success)
{
Console.WriteLine("ERROR: Failed to open session.");
return;
}
session.TransferReady += (s, e) =>
{
Console.WriteLine("Transfer is ready!");
};
session.DataTransferred += (s, e) =>
{
Console.WriteLine("Data transfer triggered");
if (e.NativeData != IntPtr.Zero)
{
Console.WriteLine("Got scan data!");
}
else
{
Console.WriteLine("Failed to get scan data!");
}
};
session.SourceDisabled += (s, e) =>
{
Console.WriteLine("Source was disabled. Transfer complete.");
session.CurrentSource.Close();
session.Close();
};
Console.WriteLine("Sources:");
foreach (var ds in session)
{
Console.WriteLine(ds.Name);
}
Console.WriteLine("---------------------");
var source = session.First();
Console.WriteLine($"Selected source: {source.Name}");
if (source.Open() != ReturnCode.Success)
{
Console.WriteLine("ERROR: failed to open source.");
return;
}
Console.WriteLine($"supports printing? {source.Capabilities.CapPrinter.IsSupported}");
Console.WriteLine("Available printers: ");
var printers = source.Capabilities.CapPrinter.GetValues();
foreach (var printer in printers)
{
Console.WriteLine(printer.ToString());
}
Console.WriteLine($"Selected printer: {source.Capabilities.CapPrinter.GetCurrent().ToString()}");
// The typical source.Capabilities.CapPrinterEnabled, etc. doesn't work here because I'm using a Kodak scanner
// source.DGControl.CapabilityCustom.Set(0x8001, ); Don't know how to use this
source.Enable(SourceEnableMode.NoUI, false, IntPtr.Zero);
Console.WriteLine("End of main script.");
Console.ReadLine();
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -in-ntwain