Code: Select all
var
EnumServicesStatusANext: function(hSCManager: SC_HANDLE; dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
EnumServicesStatusWNext: function(hSCManager: SC_HANDLE; dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
EnumServicesStatusExANext: function(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE; dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD; pszGroupName: LPCSTR): BOOL; stdcall;
EnumServicesStatusExWNext: function(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE; dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD; pszGroupName: LPCWSTR): BOOL; stdcall;
begin
HookAPI('advapi32.dll', 'EnumServicesStatusA', @EnumServicesStatusACallback, @EnumServicesStatusANext);
HookAPI('advapi32.dll', 'EnumServicesStatusW', @EnumServicesStatusWCallback, @EnumServicesStatusWNext);
HookAPI('advapi32.dll', 'EnumServicesStatusExA', @EnumServicesStatusExACallback, @EnumServicesStatusExANext);
HookAPI('advapi32.dll', 'EnumServicesStatusExW', @EnumServicesStatusExWCallback, @EnumServicesStatusExWNext);
end.
thx