从扫描仪获取图像 C#
Get image from scanner c#
我想从扫描仪获取图像。我在 Java 中有一个简单的应用程序,但我发现不存在可直接从扫描仪获取图像的免费库。所以我有了这个想法,我在 C# 中创建了一个简单的项目来获取图像,它们从 java 应用程序调用这个 exe 文件。所以我在代码源上找到了这段代码。
http://www.codeproject.com/Articles/1376/NET-TWAIN-image-scanner
如果我尝试 运行 演示应用程序,它发现我可以从扫描仪获取图像。但是如果我尝试 运行 代码项目我有这个错误
System.DllNotFoundException non è stata gestita
IsTransient=false
Message=Impossibile caricare la DLL 'twain_32.dll': Routine di inizializzazione della libreria di collegamento dinamico (DLL) non riuscita. (Eccezione da HRESULT: 0x8007045A).
Source=TwainGui
TypeName=""
StackTrace:
in TwainLib.Twain.DSMparent(TwIdentity origin, IntPtr zeroptr, TwDG dg, TwDAT dat, TwMSG msg, IntPtr& refptr)
in TwainLib.Twain.Init(IntPtr hwndp) in c:\Users\michele.castriotta\Downloads\twaingui_src\TwainGui\TwainLib.cs:riga 58
in TwainGui.MainFrame..ctor() in c:\Users\michele.castriotta\Downloads\twaingui_src\TwainGui\MainFrame.cs:riga 29
in TwainGui.MainFrame.Main() in c:\Users\michele.castriotta\Downloads\twaingui_src\TwainGui\MainFrame.cs:riga 234
in System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
in System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
in Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
in System.Threading.ThreadHelper.ThreadStart_Context(Object state)
in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
in System.Threading.ThreadHelper.ThreadStart()
InnerException:
我用 Visual Studio 2013 打开了项目,然后我将框架版本设置为 2.0,我将 select x86 作为 CPU。
此时错误在classTwainLib.cs
TwRC rc = DSMparent( appid, IntPtr.Zero, TwDG.Control, TwDAT.Parent, TwMSG.OpenDSM, ref hwndp );
我尝试将 twain_32.dll 直接复制到调试文件夹中,但错误是一样的。系统找不到图书馆。哪里出错了?
如果有可能从另一种语言获取图像对我来说是一样的。
这是一个权限问题,因为 twain_32.dll 位于 C:\Windows 下。如果右击TwainGui.exe,然后select"run as administrator",应用程序可以正常运行。
如果你想用管理员权限调试程序,检查以下步骤:
- 创建清单文件
- 将级别更改为 "requireAdministrator"
- 重启VS2013
顺便说一下,你可以直接在Java中调用C#代码,用jni4net. Here is a tutorial - Java TWAIN with Dynamic .NET TWAIN and jni4net。
我想从扫描仪获取图像。我在 Java 中有一个简单的应用程序,但我发现不存在可直接从扫描仪获取图像的免费库。所以我有了这个想法,我在 C# 中创建了一个简单的项目来获取图像,它们从 java 应用程序调用这个 exe 文件。所以我在代码源上找到了这段代码。
http://www.codeproject.com/Articles/1376/NET-TWAIN-image-scanner
如果我尝试 运行 演示应用程序,它发现我可以从扫描仪获取图像。但是如果我尝试 运行 代码项目我有这个错误
System.DllNotFoundException non è stata gestita
IsTransient=false
Message=Impossibile caricare la DLL 'twain_32.dll': Routine di inizializzazione della libreria di collegamento dinamico (DLL) non riuscita. (Eccezione da HRESULT: 0x8007045A).
Source=TwainGui
TypeName=""
StackTrace:
in TwainLib.Twain.DSMparent(TwIdentity origin, IntPtr zeroptr, TwDG dg, TwDAT dat, TwMSG msg, IntPtr& refptr)
in TwainLib.Twain.Init(IntPtr hwndp) in c:\Users\michele.castriotta\Downloads\twaingui_src\TwainGui\TwainLib.cs:riga 58
in TwainGui.MainFrame..ctor() in c:\Users\michele.castriotta\Downloads\twaingui_src\TwainGui\MainFrame.cs:riga 29
in TwainGui.MainFrame.Main() in c:\Users\michele.castriotta\Downloads\twaingui_src\TwainGui\MainFrame.cs:riga 234
in System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
in System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
in Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
in System.Threading.ThreadHelper.ThreadStart_Context(Object state)
in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
in System.Threading.ThreadHelper.ThreadStart()
InnerException:
我用 Visual Studio 2013 打开了项目,然后我将框架版本设置为 2.0,我将 select x86 作为 CPU。
此时错误在classTwainLib.cs
TwRC rc = DSMparent( appid, IntPtr.Zero, TwDG.Control, TwDAT.Parent, TwMSG.OpenDSM, ref hwndp );
我尝试将 twain_32.dll 直接复制到调试文件夹中,但错误是一样的。系统找不到图书馆。哪里出错了?
如果有可能从另一种语言获取图像对我来说是一样的。
这是一个权限问题,因为 twain_32.dll 位于 C:\Windows 下。如果右击TwainGui.exe,然后select"run as administrator",应用程序可以正常运行。
如果你想用管理员权限调试程序,检查以下步骤:
- 创建清单文件
- 将级别更改为 "requireAdministrator"
- 重启VS2013
顺便说一下,你可以直接在Java中调用C#代码,用jni4net. Here is a tutorial - Java TWAIN with Dynamic .NET TWAIN and jni4net。