![]() |
EnumServicesStatusEx
Hi,
ich hoffe es kann mir jemand etwas helfen! Ich möchte mit EnumServicesStatusEx alle laufenden Services - besser gesagt alle Service-Prozess-PIDs auflisten. Leider habe ich nur sehr wenig für D2009 dazu gefunden. :cry: Hat da jemand einen Code-Schnippsl was mir weiterhelfen könnte? Danke! |
Re: EnumServicesStatusEx
Habe es mir nun selber zusammen geschrieben:
Delphi-Quellcode:
Aufruf:
type
PServiceStatusEx = ^TServiceStatusEx; {$EXTERNALSYM _SERVICE_STATUS_EX} _SERVICE_STATUS_EX = record dwServiceType: DWORD; dwCurrentState: DWORD; dwControlsAccepted: DWORD; dwWin32ExitCode: DWORD; dwServiceSpecificExitCode: DWORD; dwCheckPoint: DWORD; dwWaitHint: DWORD; dwProcessId : DWORD; dwServiceFlags: DWORD; end; {$EXTERNALSYM SERVICE_STATUS_EX} SERVICE_STATUS_EX = _SERVICE_STATUS_EX; TServiceStatusEx = _SERVICE_STATUS_EX; // // Service Status Enumeration Structure // PEnumServiceStatusExA = ^TEnumServiceStatusExA; PEnumServiceStatusExW = ^TEnumServiceStatusExW; PEnumServiceStatusEx = PEnumServiceStatusExW; {$EXTERNALSYM _ENUM_SERVICE_STATUSA_EX} _ENUM_SERVICE_STATUSA_EX = record lpServiceName: PAnsiChar; lpDisplayName: PAnsiChar; ServiceStatus: TServiceStatusEx; end; {#BEGIN} {$EXTERNALSYM ENUM_SERVICE_STATUSA_EX} ENUM_SERVICE_STATUSA_EX = _ENUM_SERVICE_STATUSA_EX; {$EXTERNALSYM _ENUM_SERVICE_STATUSW_EX} _ENUM_SERVICE_STATUSW_EX = record lpServiceName: PWideChar; lpDisplayName: PWideChar; ServiceStatus: TServiceStatusEx; end; {#BEGIN} {$EXTERNALSYM ENUM_SERVICE_STATUSW_EX} ENUM_SERVICE_STATUSW_EX = _ENUM_SERVICE_STATUSW_EX; {$EXTERNALSYM _ENUM_SERVICE_STATUS_EX} _ENUM_SERVICE_STATUS_EX = _ENUM_SERVICE_STATUSW_EX; TEnumServiceStatusExA = _ENUM_SERVICE_STATUSA_EX; TEnumServiceStatusExW = _ENUM_SERVICE_STATUSW_EX; TEnumServiceStatusEx = TEnumServiceStatusExW; {$EXTERNALSYM EnumServicesStatusEx} function EnumServicesStatusEx(hSCManager: SC_HANDLE; InfoLevel : SC_ENUM_TYPE; dwServiceType, dwServiceState: DWORD; var lpServices: TEnumServiceStatusEx; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD; pszGroupName : PWideChar): BOOL; stdcall; {$EXTERNALSYM EnumServicesStatusExA} function EnumServicesStatusExA(hSCManager: SC_HANDLE; InfoLevel : SC_ENUM_TYPE; dwServiceType, dwServiceState: DWORD; var lpServices: TEnumServiceStatusExA; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD; pszGroupName : PChar): BOOL; stdcall; {$EXTERNALSYM EnumServicesStatusExW} function EnumServicesStatusExW(hSCManager: SC_HANDLE; InfoLevel : SC_ENUM_TYPE; dwServiceType, dwServiceState: DWORD; var lpServices: TEnumServiceStatusExW; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD; pszGroupName : PWideChar): BOOL; stdcall; function EnumServicesStatusEx; external advapi32 name 'EnumServicesStatusExW'; function EnumServicesStatusExA; external advapi32 name 'EnumServicesStatusExA'; function EnumServicesStatusExW; external advapi32 name 'EnumServicesStatusEXW';
Delphi-Quellcode:
Damit kann man nun die PID der laufenden Services abfragen.
type
TSvcA = array[0..cnMaxServices] of TEnumServiceStatusEx; PSvcA = ^TSvcA; // service status array ssa : PSvcA; EnumServicesStatusEx( schm, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_ACTIVE, ssa^[0], SizeOf(ssa^), nBytesNeeded, nServices, nResumeHandle, nil); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz