Moin Forum,
ich versuche eine einfache Scan Funktion zu implementieren. Nach einigem hin und her, bin ich bei TwainDotNet (NuGet) gelandet. WIA hatte ich bereits versucht, aber mein Scanner wird nicht erkannt (Epson ET-2750). Laut der Epson Seite arbeitet das Gerät mit Twain.
Jetzt zu meinem Problem. Ich habe zum probieren erstmal ein leeres, neues WinForms Projekt gestartet (ich arbeite allerdings mit C#, fühle mich aber in diesem Forum sehr wohl, da ich hier schon etliche tolle Informationen gefunden habe, danke dafür!)
Nach Einbindung des NuGet Pakets und initialisieren der Variable Twain geht die Misere schon los. Das Erste Problem: Es wird nur 32bit von TwainDotNet unterstützt. Durch umstellen der Konfiguration, war die entsprechende Warnung weg.
Nun erhalte ich aber die Meldung: Die DLL "twain_32.dll": Eine DLL-Initialisierungsroutine ist fehlgeschlagen. (Ausnahme von HRESULT: 0x8007045A) kann nicht geladen werden.
Ich lese das so: Die DLL fehlt oder ist defekt.
Meines Wissens gehört die twain_32.dll zu Windows und ist für die Kommunikation zum Scanner verantwortlich. Sie liegt auch im Windows Verzeichnis.
Wieso wird sie dann nicht erkannt / initialisiert?
PS Mein Epson Multifunktionsgerät ist, wie viele heutige Geräte, per Netzwerk und WSD Dienst installiert. Laut meinen Recherchen im Netz wäre die Verbindungsart aber egal. Ich hoffe das stimmt auch
Anbei mein Code in Minimalform:
Wäre schön wenn mir jemand auf die Sprünge helfen könnte. Vielleicht muss ich den Compiler noch irgendwo darauf hin weisen nur 32Bit zu verwenden??
Viele Grüße,
Double-U
ich versuche eine einfache Scan Funktion zu implementieren. Nach einigem hin und her, bin ich bei TwainDotNet (NuGet) gelandet. WIA hatte ich bereits versucht, aber mein Scanner wird nicht erkannt (Epson ET-2750). Laut der Epson Seite arbeitet das Gerät mit Twain.
Jetzt zu meinem Problem. Ich habe zum probieren erstmal ein leeres, neues WinForms Projekt gestartet (ich arbeite allerdings mit C#, fühle mich aber in diesem Forum sehr wohl, da ich hier schon etliche tolle Informationen gefunden habe, danke dafür!)
Nach Einbindung des NuGet Pakets und initialisieren der Variable Twain geht die Misere schon los. Das Erste Problem: Es wird nur 32bit von TwainDotNet unterstützt. Durch umstellen der Konfiguration, war die entsprechende Warnung weg.
Nun erhalte ich aber die Meldung: Die DLL "twain_32.dll": Eine DLL-Initialisierungsroutine ist fehlgeschlagen. (Ausnahme von HRESULT: 0x8007045A) kann nicht geladen werden.
Ich lese das so: Die DLL fehlt oder ist defekt.
Meines Wissens gehört die twain_32.dll zu Windows und ist für die Kommunikation zum Scanner verantwortlich. Sie liegt auch im Windows Verzeichnis.
Wieso wird sie dann nicht erkannt / initialisiert?
PS Mein Epson Multifunktionsgerät ist, wie viele heutige Geräte, per Netzwerk und WSD Dienst installiert. Laut meinen Recherchen im Netz wäre die Verbindungsart aber egal. Ich hoffe das stimmt auch
Anbei mein Code in Minimalform:
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using TwainDotNet;
- using System.IO;
- using TwainDotNet.WinFroms;
- namespace Twain_Scanner_32bit
- {
- using TwainDotNet.TwainNative;
- public partial class Form1 : Form
- {
- private static AreaSettings AreaSettings = new AreaSettings(Units.Centimeters, 0.1f, 5.7f, 0.1F + 2.6f, 5.7f + 2.6f);
- Twain _twain;
- ScanSettings _settings;
- public Form1()
- {
- InitializeComponent();
- try
- {
- _twain = new Twain(new WinFormsWindowMessageHook(this));
- _twain.TransferImage += delegate (Object sender, TransferImageEventArgs args)
- {
- if (args.Image != null)
- {
- pictureBox1.Image = args.Image;
- widthLabel.Text = "Width: " + pictureBox1.Image.Width;
- heightLabel.Text = "Height: " + pictureBox1.Image.Height;
- }
- };
- _twain.ScanningComplete += delegate
- {
- Enabled = true;
- };
- // comboBox1.Text = _twain.SourceNames[0];
- }
- catch (Exception e)
- {
- MessageBox.Show(e.Message);
- }
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- }
- }
Wäre schön wenn mir jemand auf die Sprünge helfen könnte. Vielleicht muss ich den Compiler noch irgendwo darauf hin weisen nur 32Bit zu verwenden??
Viele Grüße,
Double-U