Получить изображение со сканера С#

Я хочу получить изображение со сканера. У меня есть простое приложение на Java, но я вижу, что не существует бесплатной библиотеки для получения изображения непосредственно со сканера. Итак, у меня есть эта идея: я создаю простой проект на С#, чтобы получить изображение, которое они называют этим exe-файлом из java-приложения. Итак, я нашел этот код в коде.

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 и выбрал x86 в качестве процессора.

На данный момент ошибка находится в классе TwainLib.cs.

TwRC rc = DSMparent( appid, IntPtr.Zero, TwDG.Control, TwDAT.Parent, TwMSG.OpenDSM, ref hwndp );

Я пытаюсь скопировать twain_32.dll прямо в папку отладки, но ошибка та же. Система не может найти библиотеку. Где ошибка?

Если можно получить изображение с другого языка для меня то же самое.


person bircastri    schedule 18.03.2015    source источник


Ответы (1)


Это проблема разрешения, поскольку twain_32.dll находится в папке C:\Windows. Если щелкнуть правой кнопкой мыши файл TwainGui.exe и выбрать «Запуск от имени администратора», приложение запустится в обычном режиме. введите здесь описание изображения

Если вы хотите отладить программу с правами администратора, выполните следующие действия:

  1. создать файл манифеста
  2. изменить уровень на "requireAdministrator"
  3. перезапустить VS2013

введите здесь описание изображениявведите здесь описание изображения

Кстати, вы можете вызывать код C# непосредственно в Java с помощью jni4net. Вот учебник - Java TWAIN с динамическим .NET TWAIN и jni4net.

person yushulx    schedule 20.03.2015