0

使用twaindotnetC# 中的库,我想知道是否有办法使用该库设置默认数据源。

作为一个微弱的尝试,我尝试向类添加一个SetDefault方法,就像这样DataSourcetwaindonet

    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);
    }

但是当我尝试使用时SetDefaultTwain32Native.DsmIdentity总是会导致Failure被退回。

我基本上是从TWAIN 示例数据源和应用程序中复制SetDefaultsetDefaultDataSource方法

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;
}

任何帮助将不胜感激。

4

1 回答 1

1

可能的原因是您的 TWAIN DSM 版本太低。只有 DSM 2.0 或以上版本支持设置默认 TWAIN 数据源。

于 2013-05-15T07:08:29.533 回答