Benutzer mit den meisten Antworten
WIA-Scan-Dialog

Frage
-
Hallo zusammen, (hoffe ich bin jetzt im richtigen Forum),
ich war jetzt schon ewig nicht mehr hier und musste mich erst mal wieder zurecht finden. Da hat sich ja viel getan.
Ich bin gerade dabei ein älteres Programm zu überarbeiten bei dem ich ein fertiges Scan-Control vernedet hatte, das ich jetzt (nach Neuinstallation meines PC) kostenplfichtig wieder freischalten lassen müsste. Das geht mir gegen die Natur.
Also habe ich jetzt das Scannen selbst in die Hand genommen und mache das nun via WIA.Das geht auch, allerdings möchte ich direkt loslegen, also ohne Preview.
'Necessary Deklaration to handle a WIA Scan dialog Public Function scanImage() As String 'Pfad zur Temp Datei des erfassten Bildes Dim strTempImagePath As String = String.Empty 'Windows GUI zur Interaktion mit dem Gerät Dim wiaDialog As New WIA.CommonDialog 'Variable für das erfasste Bild Dim wiaImage As WIA.ImageFile = Nothing Try 'Aufruf der Windows GUI zur Interaktion mit dem Gerät, 'rückgabe ist das erfasste Bild ' wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, , , , False, ) 'True shows an additional Menue to select a scanner wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, WIA.WiaImageIntent.GrayscaleIntent, WIA.WiaImageBias.MinimizeSize, WIA.FormatID.wiaFormatJPEG, False, True, True) Catch ex As Exception MsgBox("Ein Fehler ist aufgetreten! Überprüfen Sie ob das Gerät Eingeschaltet und angeschlossen ist." & Environment.NewLine & Environment.NewLine & ex.Message) End Try If Not wiaImage Is Nothing Then 'Einen zufälligen Tempdateinamen im Temp Verzeichniss erstellen strTempImagePath = System.IO.Path.Combine(System.IO.Path.GetTempPath, System.IO.Path.GetRandomFileName()) 'Bild in Temporere Datei Speichern wiaImage.SaveFile(strTempImagePath) MyImageFile = strTempImagePath Else MsgBox("Es wurde kein Bild erfasst!", MsgBoxStyle.Information, "Information") PictureBox1.Image = Nothing End If Return strTempImagePath
Ich verwende den obenstehenden Code den ich im Internet gefunden habe.
Mein Ziel ist es nun, in diesem Dialog einzustellen, dass:- Kein Preview mehr erscheint
- Permanent in Grauwerten gescannt wird.
Ich schätze mal, dass ich hierzu in dieser Zeile was ändern muss:
wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, WIA.WiaImageIntent.GrayscaleIntent, WIA.WiaImageBias.MinimizeSize, WIA.FormatID.wiaFormatJPEG, False, True, True)
Da mir die Erleuchtung fehlt, bin ich wieder mal hier.
Vielen Dank für eure Vorschläge.Stefan
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 and VB 2010 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful. c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 and VB 2010 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful. c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/
Antworten
-
Hallo,
ich habe mich nochmals kurz über WIA informiert und bin auf dieses interessante Open-Source-Projekt gestoßen: WIA.NET
Sollte auch dies nicht helfen, hätte cih noch eine andere Idee.
Solltest du in wPF-Arbeiten kannst du das Bild auch als UI-Element rendern und das Element dann zu einem Visual umwandeln. Dann kannst du die PrintDialog-Klasse verwenden, um das Objekt direkt zu Drucken, ohne Umwege etc.
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 27. Februar 2015 09:16
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 10. März 2015 07:42
-
Hallo Stefan,
ich habe diesen Blog-Eintrag gefunden, was in etwa deiner Anforderung entspricht den Dialog nicht anzuzeigen. Weiterhin fand ich diesen Forenthread der dir vielleicht beim Scannen in S/W bzw. Grauwerten weiter hilft.Ich habe fürs 1. leider nur etwas in C# gefunden - aber du scheinst ja einen Konverter zu kennen.
Da ich mich bisher nicht weiter mit WIA auseinander setzte beschränkt sich mein Wissen leider auf das verlinkte.Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 27. Februar 2015 09:15
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 10. März 2015 07:42
Alle Antworten
-
Hallo zusammen,
ich war jetzt schon ewig nicht mehr hier und musste mich erst mal wieder zurecht finden. Da hat sich ja viel getan.
Ich bin gerade dabei ein älteres Programm zu überarbeiten bei dem ich ein fertiges Scan-Control vernedet hatte, das ich jetzt (nach Neuinstallation meines PC) kostenplfichtig wieder freischalten lassen müsste. Das geht mir gegen die Natur.
Also habe ich jetzt das Scannen selbst in die Hand genommen und mache das nun via WIA.Das geht auch, allerdings möchte ich direkt loslegen, also ohne Preview.
'Necessary Deklaration to handle a WIA Scan dialog Public Function scanImage() As String 'Pfad zur Temp Datei des erfassten Bildes Dim strTempImagePath As String = String.Empty 'Windows GUI zur Interaktion mit dem Gerät Dim wiaDialog As New WIA.CommonDialog 'Variable für das erfasste Bild Dim wiaImage As WIA.ImageFile = Nothing Try 'Aufruf der Windows GUI zur Interaktion mit dem Gerät, 'rückgabe ist das erfasste Bild ' wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, , , , False, ) 'True shows an additional Menue to select a scanner wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, WIA.WiaImageIntent.GrayscaleIntent, WIA.WiaImageBias.MinimizeSize, WIA.FormatID.wiaFormatJPEG, False, True, True) Catch ex As Exception MsgBox("Ein Fehler ist aufgetreten! Überprüfen Sie ob das Gerät Eingeschaltet und angeschlossen ist." & Environment.NewLine & Environment.NewLine & ex.Message) End Try If Not wiaImage Is Nothing Then 'Einen zufälligen Tempdateinamen im Temp Verzeichniss erstellen strTempImagePath = System.IO.Path.Combine(System.IO.Path.GetTempPath, System.IO.Path.GetRandomFileName()) 'Bild in Temporere Datei Speichern wiaImage.SaveFile(strTempImagePath) MyImageFile = strTempImagePath Else MsgBox("Es wurde kein Bild erfasst!", MsgBoxStyle.Information, "Information") PictureBox1.Image = Nothing End If Return strTempImagePath
Ich verwende den obenstehenden Code den ich im Internet gefunden habe.
Mein Ziel ist es nun, in diesem Dialog einzustellen, dass:- Kein Preview mehr erscheint
- Permanent in Grauwerten gescannt wird.
Ich schätze mal, dass ich hierzu in dieser Zeile was ändern muss:
wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, WIA.WiaImageIntent.GrayscaleIntent, WIA.WiaImageBias.MinimizeSize, WIA.FormatID.wiaFormatJPEG, False, True, True)
Da mir die Erleuchtung fehlt, bin ich wieder mal hier.
Vielen Dank für eure Vorschläge.Stefan
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 and VB 2010 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful. c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/
- Zusammengeführt Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 27. Februar 2015 09:06 Doppelposting
-
Hallo Stefan,
ich habe diesen Blog-Eintrag gefunden, was in etwa deiner Anforderung entspricht den Dialog nicht anzuzeigen. Weiterhin fand ich diesen Forenthread der dir vielleicht beim Scannen in S/W bzw. Grauwerten weiter hilft.Ich habe fürs 1. leider nur etwas in C# gefunden - aber du scheinst ja einen Konverter zu kennen.
Da ich mich bisher nicht weiter mit WIA auseinander setzte beschränkt sich mein Wissen leider auf das verlinkte.Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 27. Februar 2015 09:15
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 10. März 2015 07:42
-
Hallo Thomas,
sorry, ich dachte da wäre ich. Hier im Forum hat sich seit meinem letzten Besuch derart viel getan, dass ich mich schwer zurecht finde.
Danke für den Hinweis.
Stefan
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 and VB 2010 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful. c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/
-
Hallo,
du hättest die Frage nicht neu stellen müssen - ich bin mir ziemlich sicher, das ein Moderator den alten Thread relativ schnell ins richtige Forum verschoben hätte. (Kann ich leider nicht tun, da ich in dem anderen Forum keine Berechtigung dazu habe).Sonst siehe bitte meine Antwort in der anderen Frage.
PS: Ja, das ist das richtige Unterforum.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hallo,
das löst mein Problem leider nicht.
Der Code startet diesen Dialog. Ich möchte aber, dass dieser Dialog nicht angezeigt wird und ich zur Laufzeit bestimmen kann, ob der Scannauftrag ein Farbbild, Graustufen oder S/W-Bild liefert. (Screenshot 2).
Weiß jemand wie das geht?
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 and VB 2010 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful. c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/
-
Hallo,
ich habe mich nochmals kurz über WIA informiert und bin auf dieses interessante Open-Source-Projekt gestoßen: WIA.NET
Sollte auch dies nicht helfen, hätte cih noch eine andere Idee.
Solltest du in wPF-Arbeiten kannst du das Bild auch als UI-Element rendern und das Element dann zu einem Visual umwandeln. Dann kannst du die PrintDialog-Klasse verwenden, um das Objekt direkt zu Drucken, ohne Umwege etc.
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 27. Februar 2015 09:16
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 10. März 2015 07:42
-
Hallo,
wie sieht denn dien aktueller Code aus? Hast du mal versucht irgend etwas von den beiden verlinkten Seiten umzusetzen?Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hallo Tom,
das ist meine PublicFunction die ich nutze:
Public Function scanImage() As String 'Pfad zur Temp Datei des erfassten Bildes Dim strTempImagePath As String = String.Empty 'Windows GUI zur Interaktion mit dem Gerät Dim wiaDialog As New WIA.CommonDialog 'Variable für das erfasste Bild Dim wiaImage As WIA.ImageFile = Nothing Try 'Aufruf der Windows GUI zur Interaktion mit dem Gerät, 'rückgabe ist das erfasste Bild ' wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, , , , False, ) 'True shows an additional Menue to select a scanner wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, WIA.WiaImageIntent.GrayscaleIntent, WIA.WiaImageBias.MinimizeSize, WIA.FormatID.wiaFormatJPEG, False, True, True) Catch ex As Exception MsgBox("Ein Fehler ist aufgetreten! Überprüfen Sie ob das Gerät Eingeschaltet und angeschlossen ist." & Environment.NewLine & Environment.NewLine & ex.Message) End Try If Not wiaImage Is Nothing Then 'Einen zufälligen Tempdateinamen im Temp Verzeichniss erstellen strTempImagePath = System.IO.Path.Combine(System.IO.Path.GetTempPath, System.IO.Path.GetRandomFileName()) 'Bild in Temporere Datei Speichern wiaImage.SaveFile(strTempImagePath) MyImageFile = strTempImagePath Else MsgBox("Es wurde kein Bild erfasst!", MsgBoxStyle.Information, "Information") PictureBox1.Image = Nothing End If Return strTempImagePath End Function
rumprobiert habe ich an dieser Stelle:
' wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, , , , False, ) 'True shows an additional Menue to select a scanner wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, WIA.WiaImageIntent.GrayscaleIntent, WIA.WiaImageBias.MinimizeSize, WIA.FormatID.wiaFormatJPEG, False, True, True)
Das zeigt auch Wirkung. Aber leider nicht die gewünschte.
@ Thomas: Danke für Dein Suchen. Der letzte Code scheint C++ zu sein? Jedenfalls ergibt der Versuch ihn von C# in VB.Net zu übertragen eine Fehlermeldung.
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 and VB 2010 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful. c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/
-
Hallo zusammen,
Ich habe beide Threads zusammengeführt, damit der Diskussionsverlauf übersichtlich ist.
@Stefan: Der von Thomas verlinkte Code ist C#, in nicht verwaltetem C++ stößt man nicht auf { get; private set; } . Hast Du die von Thomas und Tom verlinkten Codeausschnitte ausprobiert?
Gruß,
Dimitar
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Bearbeitet Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 27. Februar 2015 09:15
-
Hallo Dimitar,
ja habe ich auch, jedoch mit dem gleichen Ergebnis.
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 and VB 2010 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful. c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/