AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Windows Image Aquisition (WIA) Scanner ansteuern
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Image Aquisition (WIA) Scanner ansteuern

Ein Thema von Codehunter · begonnen am 28. Sep 2010 · letzter Beitrag vom 2. Mär 2015
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 28. Sep 2010, 15:07
Moinsen!

Da ich im Netz zwar vieles zum Thema TWAIN und Delphi gefunden habe aber nahezu nichts praktikables zu WIA, habe ich einfach mal selbst eine kleine Komponente zusammengeklimpert.

Sie kann eigentlich nichts weiter als alle angeschlossenen WIA-Scanner aufzulisten, das Standard-Windows-Scan-Fenster aufzumachen (welches die Geräte-Voreinstellung vorgibt) und ein Bild vom Scanner zu holen. Das Bild landet über den Umweg einer tmp-Datei (geht nicht anders da WIA keine erkennbare streamingfähige Schnittstelle hat) in einem gewöhnlichen TBitmap-Objekt.

Ich habe den Code nur unter D5 und XP testen können. Es stand mir lediglich ein Plustek OpticPro ST48 Scanner mit einem fürchterschrecklich grottigen Treiber zur Verfügung.

Darum möchte ich meinen Code inkl. Package und Demoprogramm gern mal allen hier zur Verfügung stellen. Probierts einfach mal aus. Bin für alle Kommentare und Anregungen dankbar.

Grüssle
Cody
Angehängte Dateien
Dateityp: zip WIA.zip (186,0 KB, 411x aufgerufen)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 28. Sep 2010, 15:14
Also ich würde die Komponente TWiaScanner und die importierte Typbibliothek in zwei
getrennten Units halten.
Grund: bei höheren Delphiversionen könnte es nötig werden
die Typbibliothek neu zu importieren.
Das geht aber nicht wenn deine Komponente und die ganzen importierten Schnittstellen in einer Units sind.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 28. Sep 2010, 20:24
Ja werde ich in einer späteren Version machen. Allerdings ist dann auch nicht sicher dass eine neu importierte TLB dann mit dem selbstgeschriebenen Code kompatibel ist.

Mir geht es erstmal mehr darum, ob der Code auch woanders läuft außer bei mir und wie er sich auf höheren Win-Versionen außer XP verhält da es b Vista eine neue WIA gab und ich für die alte entwickelt habe.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 28. Sep 2010, 21:55
WIN XP SP3

Irfanview zeigt mir 6 Quellen an - 1 ist aktiv.
Dein Prog. zeigt nichts an, aber das BMP wird übernommen.

Problem gelöst: 'Scanner' ist eine unnötige Einschränkung
- ohne diese wird mir auch "USB-Videogerät" angezeigt.

Delphi-Quellcode:
constructor TWIAScanner.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FDeviceType:= '';//'Scanner';
  FBitmap:= TBitmap.Create;
  RecreateWIAObject;
end;
Miniaturansicht angehängter Grafiken
wia.jpg   wia-2.jpg  

Geändert von hathor (28. Sep 2010 um 23:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 29. Sep 2010, 12:39
Die Einschränkung auf Scanner ist nicht wirklich unnötig. Zumindest nicht WIA-clientseitig. Windows unterscheidet da verschiedene Geräteklassen da eine Digiknipse ja für gewöhnlich keinen Papiereinzug haben dürfte

Scheint so als nehmen es manche Treiber nicht so genau mit der Geräteunterteilung. Mein Code ist im Moment noch sehr rudimentär, darum erscheint die Einschränkung auf Scanner unnötig. Ich möchte das Ganze dann aber noch etwas spezialisieren. Es kämen dann auch noch weitere Klassen für Kameras etc. hinzu.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 30. Okt 2010, 10:03
Da ich ein einfaches Kopierprogramm benötige, habe ich mir das Beispiel oben angesehen. Dabei habe ich festgestellt, dass die in den Uses der Unit1 eingetragene WIALib_TLB nicht benötigt wird weil bereits alles in der Unit WindowsImageAquisition enthalten ist. Ausserdem ist in der Unit WindowsImageAquisition ein kleiner Fehler vorhanden.

In der function TWiaScanner.Scan wird für den Scan eine temporäre Datei (Zeile 907) erstellt:

    TmpFile:= GetTempFileName('~scan') + '.tmp';

Damit wird ein Dateiname zum Beispiel <Pfad>\~scan00EB2EE8..tmp erstellt. Diese Datei wird dann nach dem Laden gelöscht (Zeile 918):

        DeleteFile(TmpFile);

Zurück bleibt eine Datei <Pfad>\~scan00EB2EE8 mit der Größe 0. Am besten die Dateierweiterung oder mindestens deren . weglassen.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
FrankJ28

Registriert seit: 7. Apr 2008
211 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 31. Okt 2010, 19:47
Hallo Cody,
interessantes Thema, ich scheitere jedoch daran deine Komponente "ans Fliegen" zu bekommen. Meine Versuche werden mit
Klasse nicht registriert ClassID: 4EC4272E-2E6F-4EEB-91D0-EBC4D58E8DEE
quittiert. Eine Idee was bei mir falsch läuft?
Danke und ciao
Frank
"Sage was du tust, und tue was du sagst"
Johannes Rau

Geändert von FrankJ28 (31. Okt 2010 um 20:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 31. Okt 2010, 22:33
WIA 1 bis Windows XP, WIA 2 ab Windows Vista?

Einfachste Lösung wäre vermutlich das ActiveX zu importieren.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 1. Nov 2010, 11:29
Unter XP habe ich hier eine wiascr.dll (Microsoft Windows Image Acquisition 1.01 Type Library). Aus dieser läßt sich die Unit WIALib_TLB.pas importieren, welche die Konstante CLASS_Wia: TGUID = '{4EC4272E-2E6F-4EEB-91D0-EBC4D58E8DEE}'; enthält. Einstellungen kann man anscheinend nur in der Vorschau vornehmen, wobei es sich auf den Bildtyp (f/sw) und den Ausschnitt beschränkt. Sonst bekommt man ein 100 dpi Bild von der gesamten Auflagefläche.

Wenn man im Internet nach Windows Image Acquisition sucht, beziehen sich fast alle Seiten auf die wiaaut.dll (Microsoft Windows Image Acquisition Library v2.0). Aus dieser kann man die Unit WIA_TLB.pas importieren, in welcher die GUID = '{4EC4272E-2E6F-4EEB-91D0-EBC4D58E8DEE}' nicht enthalten ist. Dafür kann man da anscheinend einiges einstellen. WIAAutSDK
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof

Geändert von Garfield ( 1. Nov 2010 um 11:36 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#10

AW: Windows Image Aquisition (WIA) Scanner ansteuern

  Alt 2. Mär 2015, 19:19
http://vbnet.mvps.org/files/updates/wiaautsdk.zip
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz