国产系统增加进程占用提示

This commit is contained in:
yangjiaxuan 2024-09-06 18:19:40 +08:00
parent 57a2b30755
commit 5440f484be
5 changed files with 48 additions and 9 deletions

View File

@ -260,7 +260,14 @@ HGResult DeviceUser::Open()
} }
else else
{ {
return HGSane_OpenSelectedDevice(m_source, m_wnd, &m_saneDev); HGChar errInfo[256];
HGResult ret = HGSane_OpenSelectedDevice(m_source, m_wnd, &m_saneDev, errInfo, 256);
if (HGBASE_ERR_OK != ret)
{
QMessageBox::information(m_wnd, tr("Prompt"), errInfo);
}
return ret;
} }
} }
@ -281,7 +288,13 @@ HGResult DeviceUser::OpenDefault()
else else
{ {
HGChar errInfo[256]; HGChar errInfo[256];
return HGSane_OpenDevice(m_source, 0, &m_saneDev, errInfo, 256); HGResult ret = HGSane_OpenDevice(m_source, 0, &m_saneDev, errInfo, 256);
if (HGBASE_ERR_OK != ret)
{
QMessageBox::information(m_wnd, tr("Prompt"), errInfo);
}
return ret;
} }
} }

View File

@ -180,7 +180,7 @@ HGResult HGAPI HGSane_OpenDevice(HGSaneSource source, HGUInt index, HGSaneDevice
return HGBASE_ERR_OK; return HGBASE_ERR_OK;
} }
HGResult HGAPI HGSane_OpenSelectedDevice(HGSaneSource source, HGWindow parent, HGSaneDevice* dev) HGResult HGAPI HGSane_OpenSelectedDevice(HGSaneSource source, HGWindow parent, HGSaneDevice* dev, HGChar* errInfo, HGUInt errInfoLen)
{ {
if (NULL == source) if (NULL == source)
{ {
@ -189,7 +189,7 @@ HGResult HGAPI HGSane_OpenSelectedDevice(HGSaneSource source, HGWindow parent, H
HGSaneSourceImpl* saneSourceImpl = (HGSaneSourceImpl*)source; HGSaneSourceImpl* saneSourceImpl = (HGSaneSourceImpl*)source;
class HGSaneDeviceImpl* saneDeviceImpl = NULL; class HGSaneDeviceImpl* saneDeviceImpl = NULL;
HGResult ret = saneSourceImpl->OpenSelectedDevice(parent, &saneDeviceImpl); HGResult ret = saneSourceImpl->OpenSelectedDevice(parent, &saneDeviceImpl, errInfo, errInfoLen);
if (HGBASE_ERR_OK != ret) if (HGBASE_ERR_OK != ret)
{ {
return ret; return ret;

View File

@ -71,7 +71,7 @@ HGEXPORT HGResult HGAPI HGSane_GetDeviceNameWithIndex(HGSaneSource source, HGUIn
HGEXPORT HGResult HGAPI HGSane_OpenDevice(HGSaneSource source, HGUInt index, HGSaneDevice *dev, HGChar *errInfo, HGUInt errInfoLen); HGEXPORT HGResult HGAPI HGSane_OpenDevice(HGSaneSource source, HGUInt index, HGSaneDevice *dev, HGChar *errInfo, HGUInt errInfoLen);
HGEXPORT HGResult HGAPI HGSane_OpenSelectedDevice(HGSaneSource source, HGWindow parent, HGSaneDevice* dev); HGEXPORT HGResult HGAPI HGSane_OpenSelectedDevice(HGSaneSource source, HGWindow parent, HGSaneDevice* dev, HGChar* errInfo, HGUInt errInfoLen);
HGEXPORT HGResult HGAPI HGSane_CloseDevice(HGSaneDevice dev); HGEXPORT HGResult HGAPI HGSane_CloseDevice(HGSaneDevice dev);

View File

@ -507,7 +507,7 @@ HGResult HGSaneSourceImpl::OpenDevice(HGUInt index, HGSaneDeviceImpl** deviceImp
return HGBASE_ERR_OK; return HGBASE_ERR_OK;
} }
HGResult HGSaneSourceImpl::OpenSelectedDevice(HGWindow parent, class HGSaneDeviceImpl** deviceImpl) HGResult HGSaneSourceImpl::OpenSelectedDevice(HGWindow parent, class HGSaneDeviceImpl** deviceImpl, HGChar* errInfo, HGUInt errInfoLen)
{ {
if (NULL == deviceImpl) if (NULL == deviceImpl)
{ {
@ -524,7 +524,22 @@ HGResult HGSaneSourceImpl::OpenSelectedDevice(HGWindow parent, class HGSaneDevic
GetDeviceName(i, name, 256); GetDeviceName(i, name, 256);
SANE_Handle handle = NULL; SANE_Handle handle = NULL;
m_saneApi.sane_open_api(name, &handle); SANE_Status stat = m_saneApi.sane_open_api(name, &handle);
if (SANE_STATUS_GOOD != stat)
{
if (NULL != errInfo)
{
const char* err = m_saneApi.sane_strstatus_api(stat);
if (NULL != err && errInfoLen >= strlen(err) + 1)
{
strcpy(errInfo, err);
}
}
if (1 == count)
return HGBASE_ERR_FAIL;
}
if (NULL != handle) if (NULL != handle)
{ {
HGChar sn[256] = {0}; HGChar sn[256] = {0};
@ -553,7 +568,18 @@ HGResult HGSaneSourceImpl::OpenSelectedDevice(HGWindow parent, class HGSaneDevic
if (devs[i].id == id) if (devs[i].id == id)
{ {
strcpy(devName, devs[i].name.c_str()); strcpy(devName, devs[i].name.c_str());
m_saneApi.sane_open_api(devs[i].name.c_str(), &handle); SANE_Status stat = m_saneApi.sane_open_api(devs[i].name.c_str(), &handle);
if (SANE_STATUS_GOOD != stat)
{
if (NULL != errInfo)
{
const char* err = m_saneApi.sane_strstatus_api(stat);
if (NULL != err && errInfoLen >= strlen(err) + 1)
{
strcpy(errInfo, err);
}
}
}
break; break;
} }
} }

View File

@ -51,7 +51,7 @@ public:
HGResult GetDeviceCount(HGUInt *count); HGResult GetDeviceCount(HGUInt *count);
HGResult GetDeviceName(HGUInt index, HGChar* name, HGUInt maxLen); HGResult GetDeviceName(HGUInt index, HGChar* name, HGUInt maxLen);
HGResult OpenDevice(HGUInt index, class HGSaneDeviceImpl **deviceImpl, HGChar* errInfo, HGUInt errInfoLen); HGResult OpenDevice(HGUInt index, class HGSaneDeviceImpl **deviceImpl, HGChar* errInfo, HGUInt errInfoLen);
HGResult OpenSelectedDevice(HGWindow parent, class HGSaneDeviceImpl** deviceImpl); HGResult OpenSelectedDevice(HGWindow parent, class HGSaneDeviceImpl** deviceImpl, HGChar* errInfo, HGUInt errInfoLen);
private: private:
static HGResult FindFunctions(HGDll dll, const HGChar* saneManu, SANEAPI *saneAPI); static HGResult FindFunctions(HGDll dll, const HGChar* saneManu, SANEAPI *saneAPI);