Должно работать так.
Но, к сожалению, мы не живем в идеальном мире. Драйверы TWAIN являются одними из самых глючных. Управление процессом сканирования с помощью TWAIN всегда было большой головной болью, потому что большинство драйверов никогда не тестировались без диалога сканирования.
Насколько я знаю, для twain-драйверов также нет набора тестов, поэтому каждый из них будет вести себя немного по-разному.
Я написал приложение для оптического распознавания символов еще в 90-х годах, и мне пришлось также заниматься этими вопросами. В итоге я получил список поддерживаемых сканеров и модуль сканера с лотами хаков и обходных путей для каждого отдельного драйвера.
Возьмем, к примеру, ICAP_XRESOLUTION: документация TWAIN гласит, что вы должны отправить разрешение в виде 32-разрядного числа с плавающей запятой. Вы пытались установить его, используя целое число вместо этого? Или отправьте его как число с плавающей точкой, но поместите битовое представление целого числа в число с плавающей точкой, или наоборот. Все это может работать для водителя, с которым вы работаете. Или это не могло работать вообще.
Я сомневаюсь, что ситуация сильно изменилась с тех пор. Так что удачи в том, чтобы он работал, по крайней мере, на половине машин, которые там есть.