![](/img/trans.png)
[英]Oracle Driver Connection with NHibernate in Windows Server x64
[英]Twain Driver - TWAINDSM.DLL Error in Windows OS x64
我们开发了一个应用程序来控制和扫描任何文件,例如图像等,如C#Winform App,它可以在x86 OS平台上成功运行。 在应用程序中,我们使用C#twain类向扫描器发送命令,从而实现所需的功能。 众所周知, Twain_32.dll文件用于运行应用程序并进行扫描而不会失败。
我的问题是,在x64 OS平台上,我们无法运行该应用程序,并得到一个名为BadImageFormatException的错误,该错误试图告诉我们有关操作系统类型的所有信息! 所以这个错误指出我尝试在不兼容的OS类型下运行该应用程序。
我已经体验到32位twain dll在x64系统下工作,但是另一个问题困扰着我。 我们在一个父表单(即MDI父表单)下运行所有应用程序。 因此,我要用作扫描目的的表单将是MDI客户表单。 很好,尽管我的程序被编译为ANYCPU ,但CLR将在Windows x64 OS中将其作为x64位应用程序运行。 这就是为什么即使我将扫描表单编译为x64 Win OS中的x86平台目标也无法运行该应用程序的原因。
直到这里,我希望你们都明白我的意思!!!
作为解决方案,我尝试安装Twack64安装文件以获取TWAINDSM.dll文件并在x86和x64 OS计算机上运行我的应用程序。 另外,在我的自定义twain源项目中,我将dll导入属性TWAINDSM.dll替换为Twain_32.dll,但没有成功。
那么,我是否在这里丢失了某些内容,或者Twain C#应用程序无法将TWAINDSM.dll识别为twain dll? 我被困在这一步,无法继续前进!!! 拉我的头发3-4天!!! :(
快速的手将对我大有帮助! 期待您的回音!!!
我们找到了另一种方法,而不是为x64寻找TwainDSM dll,而这实际上是我公司内部无法做到的。
经过一段时间的回复后,我在twainforum上发布了一个主题,其链接如下:
好吧,当时还不足以找到我的出路。 在得到答案之前,我们已经达成协议,可以使用System.Diagnostics.Process类来解决此问题,以便根据需要在x64平台上工作。 我使用的代码如下:
var proc = new System.Diagnostics.Process();
String path = "";
var pathArray = System.Windows.Forms.Application.StartupPath.Split('\\');
for (int i = 0; i < pathArray.Count() - 1; i++)
{
path += pathArray[i] + "\\";
}
path = path + "fileName.EXE";
proc.StartInfo.FileName = path;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
if (string.IsNullOrEmpty(result))
{
MessageBox.Show("No Response from Scanner Screen!", "ERROR!");
return;
}
但是如何从该exe传递参数以在我的项目中使用它? 有一种方法可以做到! 只需在FileName.Exe的Program.cs文件中放入一行代码,如下所示:(我也将竖线用于单独的参数)
Console.Write(FilePathAndName + "|" + PicFormArsivOK.ToString() + "|" + TarayiciFormArsivOK.ToString());
最后我从结果值中读取值,如下所示:
if (result.Split('|').First() != "" && (Convert.ToBoolean(result.Split('|')[1]) == true | Convert.ToBoolean(result.Split('|')[2]) == true))
{
//TODO:
}
希望您在这里有了主意,答案对您的需求很有用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.