Я искал на этом форуме, в документации Google и Microsoft.
https://learn.microsoft.com/en-us/windo ... s/services
Но на данный момент я не нашел этой информации.
Кто-нибудь знает, как это сделать?
Это мой код для получения PID службы.
Используйте эту команду, чтобы скомпилировать с помощью Visual Studio:
Код: Выделить всё
cl /EHsc TheProgram.cpp Advapi32.lib
Код: Выделить всё
#include
#include
#include
#include
#include
Код: Выделить всё
int FindServices(const std::string &ServiceNameToFind)
{
SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_CONNECT);
if (hSCM == NULL)return 0;
DWORD bufferSize = 0;
DWORD requiredBufferSize = 0;
DWORD totalServicesCount = 0;
EnumServicesStatusEx( hSCM,
SC_ENUM_PROCESS_INFO,
SERVICE_WIN32,
SERVICE_STATE_ALL,
nullptr,
bufferSize,
&requiredBufferSize,
&totalServicesCount,
nullptr,
nullptr );
std::vector buffer( requiredBufferSize );
EnumServicesStatusEx( hSCM,
SC_ENUM_PROCESS_INFO,
SERVICE_WIN32,
SERVICE_STATE_ALL,
buffer.data(),
buffer.size(),
&requiredBufferSize,
&totalServicesCount,
nullptr,
nullptr );
int result = 0;
LPENUM_SERVICE_STATUS_PROCESS services = reinterpret_cast( buffer.data() );
for ( unsigned int i = 0; i < totalServicesCount; ++i )
{
ENUM_SERVICE_STATUS_PROCESS service = services[i];
std::string CurrentServiceName(service.lpServiceName);
std::size_t found = CurrentServiceName.find(ServiceNameToFind);
if (found==std::string::npos) continue;
DWORD processID = service.ServiceStatusProcess.dwProcessId;
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78713488/how-to-get-the-memory-usage-of-a-windows-service-in-c[/url]