【问题标题】:Using NTwain nuget package in 64-bit在 64 位中使用 NTwain nuget 包
【发布时间】:2018-09-20 12:00:35
【问题描述】:

我找到了here 一个使用 NTWain 扫描 C# WPF 文档的教程。

我在一个空的 projet x86 中尝试了该解决方案,效果很好。

现在我尝试在我的 x64 项目中使用此解决方案。首先我遇到了 twainDSM.dll 的问题,所以我下载了 x64 版本。

现在项目运行,但我的列表中没有扫描仪。

代码中有:

public TwainCore()
{
    //Allow old Device DSM drives
    PlatformInfo.Current.PreferNewDSM = false;

    var appId = TWIdentity.CreateFromAssembly(DataGroups.Image | DataGroups.Audio, Assembly.GetExecutingAssembly());
    _twainSession = new TwainSession(appId);

    PlatformInfo.Current.PreferNewDSM = false;

    _twainSession.TransferReady += _twainSession_TransferReady;
    _twainSession.StateChanged += _twainSession_StateChanged;

    if (_twainSession.Open() != ReturnCode.Success)
        throw new InvalidProgramException("Erreur de l'ouverture de la session");
}

我都看了:

  • 在 x86 中 _twainSession._ownedSources.Count = 1

  • 在 x64 中 _twainSession._ownedSources.Count = 0

那么为什么在我的 x64 项目中没有找到扫描仪?

【问题讨论】:

  • Reaching:这可能与扫描仪驱动程序没有 x64 组件有关吗?
  • @DonBoitnott 也许这是我第一次使用扫描仪,我不知道它是如何工作的。有没有办法在我的 x64 应用程序中使用 x86 dll?
  • 我不确定它是否会起作用。如何知道我的扫描仪是否与 twainDSM.dll x64 兼容?
  • 如果您的项目是商业项目,请使用github.com/cyanfish/naps2 中的NAPS2 代码,在扫描仪上工作有很多问题。微软已经发布了一项新技术WIA 作为 TWAIN 的继承者,你们之间会有一些其他的问题。我在大约一个月内完成了他们的工作。 NAPS2 是我最后的选择,它适用于我们的商业应用程序。唯一的问题是安装扫描仪的最新驱动程序。

标签: c# wpf twain


【解决方案1】:

64 位 TWAIN DSM 仅适用于 64 位数据源,大多数扫描仪仅提供 32 位数据源。因此,您需要使用 32 位 DSM。

你有两个选择:

  • 在 32 位模式下运行您的应用程序
  • 使用以 32 位模式运行的子进程

对于后者,请参阅this question。您还可以查看NAPS2(我是其作者),它通过命名管道使用 WCF 与工作进程进行通信。

请注意,WIA(TWAIN 的替代方案)不存在此问题,因为 Windows 包含一个 64 到 32 位的转换层,可以为您完成这项工作。但是,它还有其他缺点(例如对馈线的支持更差)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2011-12-07
    • 2011-03-16
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多