解决国产系统按键扫描工具安装完成后下一次打开软件失败的问题;

This commit is contained in:
yangjiaxuan 2024-08-27 14:28:49 +08:00
parent f07b166326
commit 098bc172a4
1 changed files with 22 additions and 19 deletions

View File

@ -2,33 +2,39 @@
#include <QApplication>
#include "base/HGDef.h"
#include <QTranslator>
#include <QFile>
#if !defined (HG_CMP_MSC)
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#endif
#include "log/log.h"
HLOG g_hLog = nullptr;
#if defined(OEM_HANWANG)
const char* oem = "HanvonScan";
const char* oem = "HanvonScan";
#elif defined(OEM_LISICHENG)
const char* oem = "LanxumScan";
const char* oem = "LanxumScan";
#elif defined(OEM_CANGTIAN)
const char* oem = "CumtennScan";
const char* oem = "CumtennScan";
#elif defined(OEM_ZHONGJING)
const char* oem = "MicrotekScan";
const char* oem = "MicrotekScan";
#elif defined(OEM_ZIGUANG)
const char* oem = "UniScan";
const char* oem = "UniScan";
#elif defined(OEM_NEUTRAL)
const char* oem = "NeuScan";
const char* oem = "NeuScan";
#elif defined(OEM_DELI)
const char* oem = "DeliScan";
const char* oem = "DeliScan";
#elif defined(OEM_MEISONGDA)
const char *oem = "MaxsoundScan";
#elif defined(OEM_GUANGDIANTONG)
const char *oem = "ToecScan";
#else
const char* oem = "HuaGoScan";
const char* oem = "HuaGoScan";
#endif
int main(int argc, char *argv[])
@ -46,22 +52,18 @@ int main(int argc, char *argv[])
return -1;
}
#else
const QString lockFilePath = "/tmp/HGScanTool.lock";
QFile lockFile(lockFilePath);
const char* lockFilePath = "/tmp/HGScanTool.lock";
int fd = open(lockFilePath, O_RDONLY | O_CREAT, 666);
chmod(lockFilePath, 666);
if (!lockFile.open(QIODevice::ReadWrite | QIODevice::Unbuffered))
{
return 0;
}
int fd = lockFile.handle();
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_type = F_RDLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if (fcntl(fd, F_SETLK, &lock) == -1)
{
lockFile.close();
close(fd);
return 0;
}
#endif
@ -85,7 +87,8 @@ int main(int argc, char *argv[])
#else
lock.l_type = F_UNLCK;
fcntl(fd, F_SETLK, &lock);
lockFile.close();
close(fd);
unlink(lockFilePath);
#endif
return ret;
}