Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: VB.NET

Szukam klasy lub modułu do skanowania domyślnym sterownikiem TWAIN zainstalowanego skanera.
Wszystko co znajduje to triale lub DEMO. Potrzebuje zapisać obraz z urządzenia do konkretnego folderu zależnego od parametrów, a sterownik zwykle żąda podania lokalizacji.
Ktoś z was się wzmagał z taką potrzebą?
Michał Śliwicki

Michał Śliwicki VB.NET/T-SQL/CR,
wdrożenieniowiec
systemów ERP

Temat: VB.NET

Witam,
ja napisałem coś takiego:

Dim device As New DeviceManager
Dim DeviceFiltr As DeviceInfo = Nothing

For i As Integer = 1 To device.DeviceInfos.Count
DeviceFiltr = device.DeviceInfos(i)
Next

Dim scanner = DeviceFiltr.Connect()
Dim obrazScaner = scanner.Items(1)
Dim dlg As New CommonDialogClass

Dim scanResult As Object = dlg.ShowTransfer(obrazScaner, WIA.FormatID.wiaFormatJPEG, True)
Dim imageScan As ImageFile = Nothing

If scanResult IsNot Nothing Then
imageScan = CType(scanResult, ImageFile)
End If

If File.Exists("ScanTemp.jpg") Then
File.Delete("ScanTemp.jpg")
End If

imageScan.SaveFile("ScanTemp.jpg")
img = Image.FromFile("ScanTemp.jpg")

PictureScan.Image = img
PictureScan.Refresh()
btnZapiszSkan.Enabled = True

PictureScan.Image.Dispose()
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: VB.NET

A do czego się odwołujesz?
DeviceManager, DeviceInfo, CommonDialogClass, ImageFile
Jakieś standardowe referencje?
Michał Śliwicki

Michał Śliwicki VB.NET/T-SQL/CR,
wdrożenieniowiec
systemów ERP

Temat: VB.NET

Referencja do biblioteki Interop.WIA.dll

https://drive.google.com/file/d/1tlDisDtlbY153ijWQ74_Zw...
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: VB.NET

Zauważyłem że ta sama biblioteka jest w moim systemie i to nowsza, sygnowana jako: "Microsoft Windows Image Acquisition Library v2.0"
Różnica jest taka że podłączona przez ciebie jest x86 only więc może i lepiej.

Dostaje jednak w kodzie - w tej linijce błąd:
Dim dlg As New CommonDialogClass


Błąd BC31541 Odwołanie do klasy „CommonDialogClass” jest niedozwolone, gdy jej zestaw jest skonfigurowany do osadzania typów międzyoperacyjnych.

Spotkałeś się z takim. Co powinienem zrobić w takim przypadku?
Michał Śliwicki

Michał Śliwicki VB.NET/T-SQL/CR,
wdrożenieniowiec
systemów ERP

Temat: VB.NET

A masz skompilowany project jako x86 we właściwościach (Target CPU:)?,
spróbuj dodatkowo jeszcze we właściwościach podłączonej dll przestawić opcję "Embed Interop Types" na wartość "false"
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: VB.NET

OO faktycznie jest taka opcja przy kontrolce :) i faktycznie alert znikł z ekranu.

Ożyłem tej 2.0 jest uniwersalna dla obu CPU, choć już przy wywołaniu mam komunikat:
Ostrzeżenie Wskazany zestaw 'obj\Debug\Interop.WIA.dll' wskazuje procesor inny niż aplikacja.

Sprawdzam. Działa yeach.
Poszukam co ta kontrolka ma na sobie bo przydało by się sterować wielkością DPI (bo JPG 11MB a to zbyt wiele jak na kopie pisma), Format już znalazłem JPG/PNG/BMP itp...

No to lecę dalej z projektem.
Dzięki ślicznie.

p.s
Już wszystko co chciałem mam.
Temat zamknięty - jeszcze raz dzięki za podpowiedziTen post został edytowany przez Autora dnia 17.09.19 o godzinie 22:13
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: VB.NET

Michał, chciałbym się odwdzięczyć za pomoc.
Sprawisz mi tym wielką przyjemność.

Wykorzystałem podaną przez ciebie wiedzę w swoich projektach. I mam nadzieje że znajdą uznanie na rynku. Niemniej jednak już teraz, w ramach twojej pomocy chciałbym ci podarować wybrane rozwiązanie.

Dodatek do Outlooka: http://vbatools.pl/skanuj-do-wiadomosci/
Dodatek do Worda: http://vbatools.pl/skanuj-do-dokumentu/

Odpisz na WP podając adres email który z nich ci bardziej pasuje.
Wyślę link do instalacji z dodatkiem.
Pozdrawiam.

Następna dyskusja:

Poznańska Grupa .NET




Wyślij zaproszenie do