Laden...

WIA Schnittstelle: Buttons auf Scanner abfragen?

Erstellt von Taladan vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.721 Views
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren
WIA Schnittstelle: Buttons auf Scanner abfragen?

Hallo,

ich habe einen neuen Buchscanner. Ich habe mir vor einiger Zeit ein Proggy geschreieben, mit dem ich wie gewünscht ein paar Bilder einscannen kann.

Mein neuer Scanner besitzt nun so tolle neue Tasten. Kann man die irgendwie abfangen und verwerten?

Gruß dat Tala

C
2.121 Beiträge seit 2010
vor 13 Jahren

Bei deiner detailreichen Beschreibung von Scannertyp und Tasten, kann ich dir ein klares "vielleicht" antworten 😃

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Das ist ein Plustek OpticBook 3600 Plus. Die Tasten sind S/W Scan, GraustufenScan und Farbscan. Sowie Aus/einschalter und zwei Tasten die je nach einstellung (Buch/Einzelblattscan) unterschiedliche aufgaben haben.

Gruß

Gruß dat Tala

C
2.121 Beiträge seit 2010
vor 13 Jahren

Die Suche nach dem Scanner und "Api" brachte u.a. das hier
http://www.bhvd.de/produkte/soft/api/
vielleicht hilfts dir ja

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Danke für die Mühe, das wäre ungefähr ( wenns c# wäre, genau ) das was ich suche. Leider sind die Links mitlerweile ungültig.

Gruß dat Tala

C
2.121 Beiträge seit 2010
vor 13 Jahren

Sorry dass es nicht geht, ich hab auch nur die Hauptseite gesehen. Da ist ne Telefonnummer und Mailadresse drauf, frag doch einfach mal nach. Ein Anruf dürfte dir am schnellsten sagen ob es hier weitergeht oder nicht.
Ansonsten Google mit irgendwelchen der Begriffe?

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Habe ich gestern schon gemacht. Ohne erfolg. Eine Mail habe ich auch schon abgeschickt. Mal schauen was passiert.

Gruß

Gruß dat Tala

2.891 Beiträge seit 2004
vor 13 Jahren

Kann der Scanner WIA? Wenn ja, einfach die wiaaut.dll einbinden
Und dann aus folgen Schnipseln was sinnvolles basteln:


DeviceManager deviceManager = new DeviceManagerClass();

// über DeviceManager.Devices oder wie folgt Device bestimmen
CommonDialogClass wiaDialog = new CommonDialogClass();
Device device = wiaDialog.ShowSelectDevice(WiaDeviceType.ScannerDeviceType,true,false);

// Event für Button suchen
foreach (DeviceEvent deviceEvent in device.Events)
	if (deviceEvent...==...) // passendes Event suchen
	{
		deviceManager.RegisterEvent(deviceEvent.EventID,device.DeviceID);

		deviceManager.OnEvent += delegate(string EventID,string DeviceID,string ItemID)
		{
			if (EventID==deviceEvent.EventID)
			{
			}
		};
	}

Gruß,
dN!3L

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Ja kann er. Ich probiere das morgen gleich mal aus. 😃.

Das habe ich auch schon gesucht. aber leider keine Doku bisher dazu gefunden. Weißt du evtl wo ich was finde?

Gruß

Gruß dat Tala

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Soweit ich weiss, werde die Scanner-Tasten auch irgendwo in der Registry erfasst, hab' aber jetzt auf die Schnelle nicht gefunden, wo das sein könnte. Ich schau beizeiten nochmal im TWAIN-Wrapper nach.

EDIT: Auch da leider nix gefunden 🙁

Nobody is perfect. I'm sad, i'm not nobody 🙁

2.891 Beiträge seit 2004
vor 13 Jahren

aber leider keine Doku bisher dazu gefunden. Weißt du evtl wo ich was finde?

Naja, so richtig Doku hatte ich auch nicht gefunden. Unter WIA Application Programming Interface findest du die Dokumentation der API, und wenn du mal nach "WiaDef.h" findest du den Rest Doku und die Konstanten. 😉

Hast du meinen geposteten Code mal ausprobiert? Du musst dir nur das Device-Objekt deines Scanners holen. Dessen Events-Property enthält dann alle Events, die dein Scanner unterstützt (u.A. das Drücken der Scanner-Buttons).
Folgender Code...


DeviceManager deviceManager = new DeviceManagerClass();
foreach (DeviceInfo deviceInfo in deviceManager.DeviceInfos)
	if (deviceInfo.Type== WiaDeviceType.ScannerDeviceType)
		foreach (DeviceEvent deviceEvent in deviceInfo.Connect().Events)
		{
			Console.WriteLine(deviceEvent.Name);
			Console.WriteLine(deviceEvent.Description);
			Console.WriteLine(deviceEvent.EventID);
		}		

... gibt bei meinem Scanner folgende sechs verfügbare Events zurück:


Device connected	Device connected Event		{A28BBADE-64B6-11D2-A231-00C04FA31809}
Device disconnected	Device disconnected Event	{143E4E83-6497-11D2-A231-00C04FA31809}
Scan/Image Button	Scan To Image - Button Press	{A6C5A715-8C6E-11D2-977A-0000F87A926F}
Scan/OCR Button		Scan To OCR - Button Press	{9D095B89-37D6-4877-AFED-62A297DC6DBE}
Scan/E-mail Button	Scan To E-mail - Button Press	{C686DCEE-54F2-419E-9A27-2FC7F2E98F9E}
Scan/File Button	Scan To File - Button Press	{FC4767C1-C8B3-48A2-9CFA-2E90CB3D3590}

Gruß,
dN!3L

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Mein Scanner hat die entsprechenden Events nicht im Scannerinfo. Ich vermute, das hat was mit dem Konzept von Plustek zu tun. Sie bieten für die selbe Hardware drei verschiedene Versionen an. Daher wird das wohl nicht klappen 😦. Mal schauen was mir Plustek schreibt. Bei meinen anderen Scanner funktiert der Code.

Gruß dat Tala