Hallo zusammen.
ich arbeite seit kurzem sehr gerne mit
Scanner einzuschalten, bevor ich ihn durch mein Programm nutzen wollte. Zack, da kam es zu einer TwainException und das Programm
ist gecrashed.
Hat jemand schon mit TwainDotNet gearbeitet und kann mir sagen wie ich das korrekt abfangen kann?
Mein Vorschlag wäre: ist der urspr. gewählte Scanner nicht eingeschaltet oder erreichbar, dann sollte der Quellen-Auswahl-Dialog
Zur Überbrückung hab ich das über Try..Catch gelöst, allerdings lädt er mir trotz Exception den DLG durch - ist so auch nicht
Sinn und Zweck.
LG
Spoiler anzeigen
ich arbeite seit kurzem sehr gerne mit
TwainDotNet
- heute war ich allerdings mal schusselig und hab vergessen den Scanner einzuschalten, bevor ich ihn durch mein Programm nutzen wollte. Zack, da kam es zu einer TwainException und das Programm
ist gecrashed.
Hat jemand schon mit TwainDotNet gearbeitet und kann mir sagen wie ich das korrekt abfangen kann?
Mein Vorschlag wäre: ist der urspr. gewählte Scanner nicht eingeschaltet oder erreichbar, dann sollte der Quellen-Auswahl-Dialog
_twain.SelectSource()
aufgerufen werden. dann nochmal _twain deklarieren.Zur Überbrückung hab ich das über Try..Catch gelöst, allerdings lädt er mir trotz Exception den DLG durch - ist so auch nicht
Sinn und Zweck.
LG
VB.NET-Quellcode
- Imports TwainDotNet, TwainDotNet.TwainNative, TwainDotNet.WinFroms
- Imports PdfSharp.Pdf
- Imports System.Drawing.Imaging
- Public Class dlgTwain
- Private _areaSettings As New AreaSettings(Units.Centimeters, 0.1F, 5.7F, 0.1F + 2.6F, 5.7F + 2.6F)
- Private _twain As Twain
- Private _settings As ScanSettings
- Private _images As List(Of Bitmap)
- Public _pdfDoc As PdfDocument = Nothing
- #Region "Form"
- Public Sub New()
- InitializeComponent()
- Me.KeyPreview = True
- Me.RegisterDlgKeyHandler
- RemoveHandler SplitContainer1.SplitterMoved, AddressOf SplitContainer1_SplitterMoved
- Try
- _twain = New Twain(New WinFormsWindowMessageHook(Me)) '<- hier kommt die Exception, wenn der Scanner ausgeschaltet / nicht erreichbar ist.
- 'TODO: Abfangen, wenn urspr. gewählter Scanner ausgeschaltet / nicht erreichbar ist - es muss dann ein Dialog zur Auswahl eines Anderen gezeigt werden.
- 'Aus Stacktrace:
- 'TwainException
- 'bei TwainDotNet.DataSource.GetDefault(Identity applicationId, IWindowsMessageHook messageHook)
- 'bei TwainDotNet.DataSourceManager..ctor(Identity applicationId, IWindowsMessageHook messageHook)
- 'bei TwainDotNet.Twain..ctor(IWindowsMessageHook messageHook)
- ' Add a handler to grab each image as it comes off the scanner
- AddHandler _twain.TransferImage, Sub(sender As Object, args As TwainDotNet.TransferImageEventArgs)
- If (Not (args.Image Is Nothing)) Then
- PictureBox1.Image = args.Image
- _images.Add(args.Image)
- dgv_AddImg(args.Image)
- End If
- End Sub
- ' Re-enable the form after scanning completes
- AddHandler _twain.ScanningComplete, Sub(sender As Object, e As TwainDotNet.ScanningCompleteEventArgs)
- savePdf()
- Enabled = True
- End Sub
- PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
- 'TODO: aktuelle source anzeigen
- dgv_settings()
- Catch ex As TwainException '<- Übergangslösung, damit Programm nicht crashed. Der Dialog(Me) wird leider trotzdem angezeigt
- msgEx(ex, "Der urspr. Scanner scheint nicht erreichbar. Ausgeschaltet?")
- Return '<- dlg soll eigentlich schließen...
- End Try
- End Sub
"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"