mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
510bb903ae
* Disable AVAHI * Replace SysInfo backport with Qt SysInfo * Update vscode config * Update LedDevices * Update Logger * Update hyperiond * Update hyperion-remote * Exclude avahi * Empty definition for Process * PythonInit path broken * Exclude PiBlaster and link ws2_32 * more avahi * resolve ui bug * Update Compile howto * JsonAPI QtGrabber missing * fix error * ssize_t replacement * Nope, doesn't work * Adjust compile description and verify winSDK * Update ci script * Update ci script * Update ci * Update ci script * update Logger * Update PythonInit * added Azure & GitHub Actions, Logger, PythonInit * resolve merge conflicts * revert ssize_t in FadeCandy * look at registry for QT5 & use find_package(Python) if cmake >= 3.12 * second try * another try * and yet another test * qt5 registry search undone * Package creation test * finished package creation. only fine tuning is required :-) Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com> * Dependencies for Windows finished Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com> * use 'add_definitions()' until CMake 3.12 Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com> * Update .github/workflows/pull-request.yml Co-Authored-By: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com> * Update cmake/Dependencies.cmake Co-Authored-By: brindosch <edeltraud70@gmx.de> * fix typo/ add VCINSTALLDIR var * fix again * Undo change again (Not working) * fix QT grabber Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com> * first NSIS test Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com> * Update NSIS package * surprise :-) Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com> * Update NSIS package * fix: NSIS .bmps * Add nsis templates * Force windows gui app * fix: QSysInfo required Qt5.6, now it's 5.4 again * Update: Remove platform component and adjust package name * Add macOS as system name * Update docs * fix: Allow gh actions ci also for forks with branches * Add ReadMe docs, mention windows, add vscode linux debug config * fix: readme visual * reduce/hide banner/copyright/log message Infos here: https://docs.microsoft.com/de-de/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019#switches * Fix PythonInit * vscode: Add runner task * fix(vscode): compiler path gcc ver independent * fix azure * vscode: add windows run tasks * move process detection * main: add windows process detection * Azure file shredder * Update docs Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com> Co-authored-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
85 lines
2.0 KiB
C
85 lines
2.0 KiB
C
#pragma once
|
|
|
|
#include <QString>
|
|
#include <QProcess>
|
|
#include <QByteArray>
|
|
|
|
#ifdef WIN32
|
|
// psapi.h requires windows.h to be included
|
|
#include <Windows.h>
|
|
#include <Psapi.h>
|
|
#endif
|
|
|
|
unsigned int getProcessIdsByProcessName(const char *processName, QStringList &listOfPids)
|
|
{
|
|
|
|
// Clear content of returned list of PIDS
|
|
listOfPids.clear();
|
|
|
|
#if defined(WIN32)
|
|
// Get the list of process identifiers.
|
|
DWORD aProcesses[1024], cbNeeded, cProcesses;
|
|
unsigned int i;
|
|
|
|
if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
|
|
return 0;
|
|
|
|
// Calculate how many process identifiers were returned.
|
|
cProcesses = cbNeeded / sizeof(DWORD);
|
|
|
|
// Search for a matching name for each process
|
|
for (i = 0; i < cProcesses; i++)
|
|
{
|
|
if (aProcesses[i] != 0)
|
|
{
|
|
char szProcessName[MAX_PATH] = {0};
|
|
|
|
DWORD processID = aProcesses[i];
|
|
|
|
// Get a handle to the process.
|
|
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID);
|
|
|
|
// Get the process name
|
|
if (NULL != hProcess)
|
|
{
|
|
HMODULE hMod;
|
|
DWORD cbNeeded;
|
|
|
|
if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded))
|
|
GetModuleBaseNameA(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(char));
|
|
|
|
// Release the handle to the process.
|
|
CloseHandle(hProcess);
|
|
|
|
if (*szProcessName != 0 && strcmp(processName, szProcessName) == 0)
|
|
listOfPids.append(QString::number(processID));
|
|
}
|
|
}
|
|
}
|
|
|
|
return listOfPids.count();
|
|
|
|
#else
|
|
|
|
// Run pgrep, which looks through the currently running processses and lists the process IDs
|
|
// which match the selection criteria to stdout.
|
|
QProcess process;
|
|
process.start("pgrep", QStringList() << processName);
|
|
process.waitForReadyRead();
|
|
|
|
QByteArray bytes = process.readAllStandardOutput();
|
|
|
|
process.terminate();
|
|
process.waitForFinished();
|
|
process.kill();
|
|
|
|
// Output is something like "2472\n2323" for multiple instances
|
|
if (bytes.isEmpty())
|
|
return 0;
|
|
|
|
listOfPids = QString(bytes).split("\n", QString::SkipEmptyParts);
|
|
return listOfPids.count();
|
|
|
|
#endif
|
|
}
|