Automatyczne obsłużenie skanowania TWAIN

0

Witajcie,

Bawię się przykładem http://www.codeproject.com/Articles/1376/NET-TWAIN-image-scanner do obsługi skanera poprzez TWAIN.
Obsługa sprowadza się do 5 kroków:

     Init();
    Select();
    Acquire();
    PassMessage();
    TransferPictures();

Generalnie użytkownik musi wykonać minimalnie 3 kliknięcia - wcisnąć w mojej aplikacji SKANUJ, potwierdzić na liście wybór sterwonika TWAIN i w oknie tego sterownika wcisnąć START/SKANUJ, który rozpocznie proces skanowania. Chcę go wyręczyć i te kliknięcia wyeliminować.

Metoda Select() korzysta z takiej oto linijki, która otwiera mi okno wyboru skanera (a właściwie dostępnych uchwytów do Twain, WIA itd. wszystkich urządzeń widzianych przez system):

rc = DSMident( appid, IntPtr.Zero, TwDG.Control, TwDAT.Identity, TwMSG.UserSelect, srcds );
		 

Gdy nie wykorzystam Select(), to wybrany zostanie pierwszy z listy skaner.
Pytanie 1 - jak mogę wskazać mu, który skaner ma wybrać, tak żeby tego nie robić ręcznie, ale żeby to nie był pierwszy z nich?

Pytanie 2 - gdy skaner jest już wybrany, metoda Acquire() otwiera mi okno sterownika TWAIN danego urządzenia, gdzie mogę ustawić parametry skanowania. Następnie w pętli nasłuchiwane jest, co to okno wysyła w świat:

IMessageFilter.PreFilterMessage(ref Message m)

Gdy wcisnę skan/start, to zaczyna się skanowanie. Czy mogę też ten krok pominąć, tzn. wywołać przycisk skanowania od razu w aplikacji, znów żeby użytkownik nie musiał robić kolejnego kliku? Czy mogę przesłać parametry skanu, tzn. z pominięciem okna drivera TWAIN ustawić, że chcę np. czarno biały skan o określonym DPI, oczywiście w zakresie na jaki pozwala mi sterownik danego urządzenia?

0

No to trochę inne pytanie.

Czy za pomocą TWAIN (import DLL twain_32.dll w projekcie) mogę wymusić na skanerze, żeby od razu skanował po wciśnięciu przycisku w mojej aplikacji, a nie jak ma to teraz miejsce, że wywołuje się okno sterownika skanera i muszę na nim kliknąć SKANUJ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1