Настройка источника данных TWAIN по умолчанию без использования меню интерфейса пользователя API
С использованием twaindotnet
библиотека в C#, мне интересно, есть ли способ установить источник данных по умолчанию с помощью библиотеки.
В качестве слабой попытки я попытался добавить SetDefault
метод к DataSource
класс twaindonet
, как это
public static void SetDefault(Identity applicationId, IWindowsMessageHook messageHook, DataSource newDataSource)
{
var defaultSourceId = newDataSource.SourceId;
// Attempt to get information about the system default source
var result = Twain32Native.DsmIdentity(
applicationId,
IntPtr.Zero,
DataGroup.Control,
DataArgumentType.Identity,
Message.Set,
defaultSourceId);
if (result != TwainResult.Success)
{
var status = DataSourceManager.GetConditionCode(applicationId, null);
throw new TwainException("Error getting information about the default source: " + result, result, status);
}
}
который вызывается из DataSourceManage
класс как это
public void SelectSource(DataSource dataSource)
{
DataSource.Dispose();
DataSource.SetDefault(ApplicationId, _messageHook, dataSource);
}
Но когда я пытаюсь использовать SetDefault
, Twain32Native.DsmIdentity
всегда приводит к Failure
возвращается
Я в основном скопировал с SetDefault
setDefaultDataSource
метод из примера источника данных и приложения TWAIN
pTW_IDENTITY TwainApp::setDefaultDataSource(unsigned int _index)
{
if(m_DSMState < 3)
{
cout << "You need to open the DSM first." << endl;
return NULL;
}
else if(m_DSMState > 3)
{
PrintCMDMessage("A source has already been opened, please close it first\n");
return NULL;
}
if(_index >= 0 && _index < m_DataSources.size())
{
m_pDataSource = &(m_DataSources[_index]);
// set the specific data source
TW_UINT16 twrc;
twrc = _DSM_Entry(
&m_MyInfo,
0,
DG_CONTROL,
DAT_IDENTITY,
MSG_SET,
(TW_MEMREF) m_pDataSource);
switch (twrc)
{
case TWRC_SUCCESS:
break;
case TWRC_FAILURE:
printError(0, "Failed to get the data source info!");
break;
}
}
else
{
return NULL;
}
return m_pDataSource;
}
Любая помощь будет принята с благодарностью.
1 ответ
Решение
Возможная причина - слишком низкая версия вашего TWAIN DSM. Только DSM 2.0 или выше поддерживает настройку источника данных TWAIN по умолчанию.