Veröffentlicht 25. Februar 201312 j Hat da jemand Erfahrung mit? Leider gibt das Wia Tutorial unter WIA Tutorial (Windows) nicht so viel für mich her und auch sonst hab ich sehr wenig hilfreiches dazu im Internet gefunden. Ich komme soweit das ich mir mit der DeviceId ein IWiaItem2 meines Scanners erzeuge. Aber mir ist nicht klar wie es von da weitergeht. In dem obigen Beispiel wird als nächstes über alle Items in dem Device iteriert und dann eins davon transferiert. Ich vermute mal das das auf DigiCams abzielen soll und man so Fotos von der Speicherkarte auf den PC transferieren kann. Hilft mir leider beim Scanner nicht weiter. Ich hab einfach mal probiert mit IWiaItem2 *pPicture = 0; hr = pWiaDevice->DeviceCommand(0, &WIA_CMD_TAKE_PICTURE, &pPicture);[/PHP] WIA_CMD_TAKE_PICTURE an den Scanner zu senden, aber da erhalte ich nur E_NOTIMPL als Result zurück. Bin da ziemlich ratlos.
25. Februar 201312 j If the imaging device is a scanner, IWiaDataTransfer::idtGetData, or other methods of the IWiaDataTransfer interface, triggers a scan operation, and then transfers the resulting image data. Quelle
25. Februar 201312 j Autor Ja das geht aber nur auf einem konkreten Item das zum scannen ausgewählt wurde. Auswählen kann man das über den standard Dialog mit DeviceDlg() was ich eigentlich vermeiden wollte oder irgendwie programmatisch. Allerdings geht das auch nicht direkt über das Interface des Scanners wie ich rausgefunden habe. Dieses ist nämlich nur der root eines Baums welcher alle Funktionen des Gerätes wiederspiegelt. Aus diesem Baum muss man sich dann irgendwie das Item raussuchen welches scannen kann und da dann das Document zum scannen selectieren und dann scannen. Zumindest hab ich es jetzt so verstanden, ist alles ziemlich umständlich
25. Februar 201312 j Autor Hmm wenn ich jetzt versuche über mein Item das fürs scannen zuständig sein sollte den DeviceDlg aufzurufen bekomme ich als Result E_INVALIDARG. LONG files = 0; BSTR *fileNames = new BSTR[0]; IWiaItem2 *pWiaItems; hr = pScannerItem->DeviceDlg(0, NULL, TEXT("d:\\testscan"), TEXT("test.png"), &files, &fileNames, &pWiaItems);[/PHP] Ich vermute mal das es am letzten Parameter liegt wo er die Adresse eines Arrays von Pointern auf IWiaItem2 möchte, was mich aber leider nicht weiter bringt. IWiaItem2::DeviceDlg method (Windows) Das bringt zum Beispiel den selben Fehler: [PHP]IWiaItem2 *pWiaItems[10]; hr = pScannerItem->DeviceDlg(0, NULL, TEXT("d:\\testscan"), TEXT("test.png"), &files, &fileNames, pWiaItems);
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.