我发现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项目中找不到扫描仪?
答案 0 :(得分:1)
64位TWAIN DSM仅适用于64位数据源,大多数扫描仪仅提供32位数据源。因此,您将需要使用32位DSM。
您有两个选择:
对于后者,请参见this question。您还可以查看NAPS2(我是作者),该人在命名管道上使用WCF与工作进程通信。
请注意,WIA(TWAIN的替代方法)不存在此问题,因为Windows包括64位至32位转换层,可以为您完成此工作。但是,它还有其他缺点(例如对支线的支持更差)。