init
This commit is contained in:
@@ -148,4 +148,105 @@ namespace utils
|
||||
return Pid;
|
||||
|
||||
}
|
||||
|
||||
// 不区分大小写查找子串
|
||||
bool StrContainsI(const char* src, const char* sub)
|
||||
{
|
||||
char* p = strstr(_strlwr((char*)src), _strlwr((char*)sub));
|
||||
return p != nullptr;
|
||||
}
|
||||
|
||||
// 不区分大小写宽字符串查找
|
||||
bool StrContainsI(LPCWSTR Source, LPCWSTR Sub)
|
||||
{
|
||||
if (!Source || !Sub)
|
||||
return FALSE;
|
||||
WCHAR srcBuf[1024] = { 0 };
|
||||
WCHAR subBuf[1024] = { 0 };
|
||||
lstrcpyW(srcBuf, Source);
|
||||
lstrcpyW(subBuf, Sub);
|
||||
_wcslwr(srcBuf);
|
||||
_wcslwr(subBuf);
|
||||
return wcsstr(srcBuf, subBuf) != nullptr;
|
||||
}
|
||||
|
||||
|
||||
// 读取注册表字符串值
|
||||
BOOL RegReadString(HKEY hRoot, LPCSTR szSubKey, LPCSTR szValueName, char* outBuf, DWORD bufSize)
|
||||
{
|
||||
HKEY hKey;
|
||||
LONG ret = RegOpenKeyExA(hRoot, szSubKey, 0, KEY_READ, &hKey);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return FALSE;
|
||||
|
||||
DWORD dataType = REG_SZ;
|
||||
DWORD dataLen = bufSize;
|
||||
ret = RegQueryValueExA(hKey, szValueName, nullptr, &dataType, (LPBYTE)outBuf, &dataLen);
|
||||
RegCloseKey(hKey);
|
||||
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return FALSE;
|
||||
outBuf[dataLen] = '\0';
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void GetProcessName(
|
||||
DWORD ProcessId,
|
||||
char* ProcessName,
|
||||
DWORD ProcessNameSize
|
||||
)
|
||||
{
|
||||
ProcessName[0] = '\0';
|
||||
|
||||
HANDLE ProcessHandle =
|
||||
OpenProcess(
|
||||
PROCESS_QUERY_LIMITED_INFORMATION,
|
||||
FALSE,
|
||||
ProcessId
|
||||
);
|
||||
|
||||
if (!ProcessHandle)
|
||||
{
|
||||
strcpy_s(
|
||||
ProcessName,
|
||||
ProcessNameSize,
|
||||
"Unknown"
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD Size = ProcessNameSize;
|
||||
|
||||
if (!QueryFullProcessImageNameA(
|
||||
ProcessHandle,
|
||||
0,
|
||||
ProcessName,
|
||||
&Size))
|
||||
{
|
||||
strcpy_s(
|
||||
ProcessName,
|
||||
ProcessNameSize,
|
||||
"Unknown"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
char* FileName =
|
||||
strrchr(ProcessName, '\\');
|
||||
|
||||
if (FileName)
|
||||
{
|
||||
memmove(
|
||||
ProcessName,
|
||||
FileName + 1,
|
||||
strlen(FileName)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
CloseHandle(ProcessHandle);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user