TwainDotNet Dll Initialisierungsroutine ist fehlgeschlagen

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    TwainDotNet Dll Initialisierungsroutine ist fehlgeschlagen

    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:

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Threading.Tasks;
    9. using System.Windows.Forms;
    10. using TwainDotNet;
    11. using System.IO;
    12. using TwainDotNet.WinFroms;
    13. namespace Twain_Scanner_32bit
    14. {
    15. using TwainDotNet.TwainNative;
    16. public partial class Form1 : Form
    17. {
    18. private static AreaSettings AreaSettings = new AreaSettings(Units.Centimeters, 0.1f, 5.7f, 0.1F + 2.6f, 5.7f + 2.6f);
    19. Twain _twain;
    20. ScanSettings _settings;
    21. public Form1()
    22. {
    23. InitializeComponent();
    24. try
    25. {
    26. _twain = new Twain(new WinFormsWindowMessageHook(this));
    27. _twain.TransferImage += delegate (Object sender, TransferImageEventArgs args)
    28. {
    29. if (args.Image != null)
    30. {
    31. pictureBox1.Image = args.Image;
    32. widthLabel.Text = "Width: " + pictureBox1.Image.Width;
    33. heightLabel.Text = "Height: " + pictureBox1.Image.Height;
    34. }
    35. };
    36. _twain.ScanningComplete += delegate
    37. {
    38. Enabled = true;
    39. };
    40. // comboBox1.Text = _twain.SourceNames[0];
    41. }
    42. catch (Exception e)
    43. {
    44. MessageBox.Show(e.Message);
    45. }
    46. }
    47. private void Form1_Load(object sender, EventArgs e)
    48. {
    49. }
    50. }
    51. }



    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
    @Double-U Hast Du Dir mal die Beispiele dazu angesehen:
    github.com/Dynamsoft/Dynamic-.NET-TWAIN-SDK
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!