linux上完善AppIsRun函数和RunApp函数

This commit is contained in:
luoliangyi 2022-07-04 09:16:14 +08:00
parent 6d52429a2a
commit 620189cc07
1 changed files with 51 additions and 3 deletions

View File

@ -462,7 +462,7 @@ bool AppIsRun()
{
WCHAR exeFullPath[1024] = { 0 };
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
if (NULL != hProcess)
if (nullptr != hProcess)
{
DWORD bufferLen = 1024;
::QueryFullProcessImageName(hProcess, 0, exeFullPath, &bufferLen);
@ -485,7 +485,44 @@ bool AppIsRun()
#else
return false;
std::string cmd;
std::string appPath;
#if defined(OEM_HANWANG)
cmd = "ps -ef | grep HanvonScan";
appPath = "/opt/apps/com.hanvonchina.hanvonscan/files/bin/HanvonScan";
#elif defined(OEM_LISICHENG)
cmd = "ps -ef | grep LanxumScan";
appPath = "/opt/apps/com.lanxumchina.lanxumscan/files/bin/LanxumScan";
#else
cmd = "ps -ef | grep HuaGoScan";
appPath = "/opt/apps/com.huagaochina.huagoscan/files/bin/HuaGoScan";
#endif
bool ret = false;
FILE *fp = popen(cmd.c_str(), "rb");
if (nullptr != fp)
{
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);
if (size > 0)
{
char *data = (char *)malloc(size + 1);
if (nullptr != data)
{
fread(data, 1, size, fp);
data[size] = 0;
if (nullptr != strstr(data, appPath.c_str()))
ret = true;
free(data);
}
}
pclose(fp);
}
return ret;
#endif
}
@ -520,10 +557,21 @@ void RunApp()
if (!appPath.empty())
{
ShellExecuteW(NULL, L"open", appPath.c_str(), NULL, NULL, SW_SHOW);
ShellExecuteW(nullptr, L"open", appPath.c_str(), nullptr, nullptr, SW_SHOW);
}
#else
std::string appPath;
#if defined(OEM_HANWANG)
appPath = "sh /opt/apps/com.hanvonchina.hanvonscan/files/bin/HanvonScan.sh &";
#elif defined(OEM_LISICHENG)
appPath = "sh /opt/apps/com.lanxumchina.lanxumscan/files/bin/LanxumScan.sh &";
#else
appPath = "sh /opt/apps/com.huagaochina.huagoscan/files/bin/HuaGoScan.sh &";
#endif
system(appPath);
#endif
}