2020-03-11 01:58:06 +00:00
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "CTwainMutex.h"
|
|
|
|
|
|
|
|
|
|
CTwainMutex::CTwainMutex(void)
|
|
|
|
|
{
|
|
|
|
|
m_hTwainMutex=NULL;
|
|
|
|
|
m_bInited=FALSE;
|
|
|
|
|
memset(m_sTwainMutex,0,sizeof(m_sTwainMutex));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CTwainMutex::~CTwainMutex(void)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (m_hTwainMutex!=NULL)
|
|
|
|
|
{
|
|
|
|
|
CloseHandle(m_hTwainMutex);
|
|
|
|
|
m_hTwainMutex=NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CTwainMutex::CreatTwainMutex(TCHAR *str_Mutex)
|
|
|
|
|
{
|
|
|
|
|
TCHAR mutexName[MAX_PATH]={0};
|
|
|
|
|
DWORD error_code=0;
|
|
|
|
|
HANDLE hMutex=NULL;
|
|
|
|
|
BOOL b_ret=FALSE;
|
|
|
|
|
if (m_hTwainMutex!=NULL)
|
|
|
|
|
{
|
|
|
|
|
return b_ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_tcscpy(mutexName,str_Mutex);
|
|
|
|
|
|
|
|
|
|
hMutex=CreateMutex(NULL,FALSE,mutexName);
|
|
|
|
|
if (hMutex!=NULL)
|
|
|
|
|
{
|
|
|
|
|
error_code=GetLastError();
|
|
|
|
|
if (error_code==ERROR_ALREADY_EXISTS||error_code==ERROR_ACCESS_DENIED)
|
|
|
|
|
{
|
|
|
|
|
MessageBox(NULL, _T("<EFBFBD>豸<EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>ռ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>"), _T("<EFBFBD><EFBFBD>ʾ"),MB_OK|MB_ICONWARNING);
|
|
|
|
|
b_ret=CloseHandle(hMutex);
|
|
|
|
|
if (!b_ret)
|
|
|
|
|
{
|
|
|
|
|
MessageBox(NULL, TEXT("<EFBFBD><EFBFBD>Դ<EFBFBD>ͷ<EFBFBD><EFBFBD>쳣"), 0, MB_ICONWARNING);
|
|
|
|
|
}
|
|
|
|
|
hMutex=NULL;
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (m_hTwainMutex!=NULL)
|
|
|
|
|
{
|
|
|
|
|
b_ret=CloseHandle(m_hTwainMutex);
|
|
|
|
|
if (!b_ret)
|
|
|
|
|
{
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
m_hTwainMutex=NULL;
|
|
|
|
|
}
|
|
|
|
|
m_hTwainMutex=hMutex;
|
|
|
|
|
b_ret=TRUE;
|
|
|
|
|
}
|
|
|
|
|
return b_ret;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageBox(NULL, TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), 0, MB_ICONWARNING);
|
|
|
|
|
}
|
|
|
|
|
return b_ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CTwainMutex::CheckExistTwainMutex(TCHAR* str_Mutex)
|
|
|
|
|
{
|
|
|
|
|
TCHAR szMutexName[MAX_PATH] = {0};
|
|
|
|
|
DWORD error_code = 0;
|
|
|
|
|
BOOL b_ret = FALSE;
|
|
|
|
|
HANDLE hMutex = NULL;
|
|
|
|
|
|
|
|
|
|
if (m_hTwainMutex!=NULL)
|
|
|
|
|
{
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_tcscpy(szMutexName,str_Mutex);
|
|
|
|
|
hMutex=CreateMutex(NULL,FALSE,szMutexName);
|
|
|
|
|
if (hMutex!=NULL)
|
|
|
|
|
{
|
|
|
|
|
error_code=GetLastError();
|
|
|
|
|
if (error_code==ERROR_ALREADY_EXISTS||error_code==ERROR_ACCESS_DENIED)
|
|
|
|
|
{
|
|
|
|
|
b_ret=CloseHandle(hMutex);
|
|
|
|
|
hMutex=NULL;
|
|
|
|
|
b_ret=TRUE;
|
|
|
|
|
return b_ret;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
CloseHandle(hMutex);
|
|
|
|
|
b_ret=FALSE;
|
|
|
|
|
return b_ret;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
return b_ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CTwainMutex::CloseTwainMutex()
|
|
|
|
|
{
|
|
|
|
|
BOOL b_ret=FALSE;
|
|
|
|
|
if (m_hTwainMutex!=NULL)
|
|
|
|
|
{
|
|
|
|
|
b_ret=CloseHandle(m_hTwainMutex);
|
|
|
|
|
|
|
|
|
|
if (!b_ret)
|
|
|
|
|
{
|
2023-04-24 11:30:39 +00:00
|
|
|
|
MessageBox(NULL, TEXT("<EFBFBD><EFBFBD>Դ<EFBFBD>ͷ<EFBFBD>ʧ<EFBFBD><EFBFBD>"), 0, MB_ICONWARNING);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
}
|
|
|
|
|
m_hTwainMutex=NULL;
|
|
|
|
|
return b_ret;
|
|
|
|
|
}
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|