📄 jwawinsvc.pas
字号:
_SERVICE_STATUS_PROCESS = record
dwServiceType: DWORD;
dwCurrentState: DWORD;
dwControlsAccepted: DWORD;
dwWin32ExitCode: DWORD;
dwServiceSpecificExitCode: DWORD;
dwCheckPoint: DWORD;
dwWaitHint: DWORD;
dwProcessId: DWORD;
dwServiceFlags: DWORD;
end;
{$EXTERNALSYM _SERVICE_STATUS_PROCESS}
SERVICE_STATUS_PROCESS = _SERVICE_STATUS_PROCESS;
{$EXTERNALSYM SERVICE_STATUS_PROCESS}
TServiceStatusProcess = SERVICE_STATUS_PROCESS;
PServiceStatusProcess = LPSERVICE_STATUS_PROCESS;
//
// Service Status Enumeration Structure
//
LPENUM_SERVICE_STATUSA = ^ENUM_SERVICE_STATUSA;
{$EXTERNALSYM LPENUM_SERVICE_STATUSA}
_ENUM_SERVICE_STATUSA = record
lpServiceName: LPSTR;
lpDisplayName: LPSTR;
ServiceStatus: SERVICE_STATUS;
end;
{$EXTERNALSYM _ENUM_SERVICE_STATUSA}
ENUM_SERVICE_STATUSA = _ENUM_SERVICE_STATUSA;
{$EXTERNALSYM ENUM_SERVICE_STATUSA}
TEnumServiceStatusA = ENUM_SERVICE_STATUSA;
PEnumServiceStatusA = LPENUM_SERVICE_STATUSA;
LPENUM_SERVICE_STATUSW = ^ENUM_SERVICE_STATUSW;
{$EXTERNALSYM LPENUM_SERVICE_STATUSW}
_ENUM_SERVICE_STATUSW = record
lpServiceName: LPWSTR;
lpDisplayName: LPWSTR;
ServiceStatus: SERVICE_STATUS;
end;
{$EXTERNALSYM _ENUM_SERVICE_STATUSW}
ENUM_SERVICE_STATUSW = _ENUM_SERVICE_STATUSW;
{$EXTERNALSYM ENUM_SERVICE_STATUSW}
TEnumServiceStatusW = ENUM_SERVICE_STATUSW;
PEnumServiceStatusW = LPENUM_SERVICE_STATUSW;
{$IFDEF UNICODE}
ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUSW;
{$EXTERNALSYM ENUM_SERVICE_STATUS}
LPENUM_SERVICE_STATUS = LPENUM_SERVICE_STATUSW;
{$EXTERNALSYM LPENUM_SERVICE_STATUS}
TEnumServiceStatus = TEnumServiceStatusW;
PEnumServiceStatus = PEnumServiceStatusW;
{$ELSE}
ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUSA;
{$EXTERNALSYM ENUM_SERVICE_STATUS}
LPENUM_SERVICE_STATUS = LPENUM_SERVICE_STATUSA;
{$EXTERNALSYM LPENUM_SERVICE_STATUS}
TEnumServiceStatus = TEnumServiceStatusA;
PEnumServiceStatus = PEnumServiceStatusA;
{$ENDIF}
LPENUM_SERVICE_STATUS_PROCESSA = ^ENUM_SERVICE_STATUS_PROCESSA;
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESSA}
_ENUM_SERVICE_STATUS_PROCESSA = record
lpServiceName: LPSTR;
lpDisplayName: LPSTR;
ServiceStatusProcess: SERVICE_STATUS_PROCESS;
end;
{$EXTERNALSYM _ENUM_SERVICE_STATUS_PROCESSA}
ENUM_SERVICE_STATUS_PROCESSA = _ENUM_SERVICE_STATUS_PROCESSA;
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESSA}
TEnumServiceStatusProcessA = ENUM_SERVICE_STATUS_PROCESSA;
PEnumServiceStatusProcessA = LPENUM_SERVICE_STATUS_PROCESSA;
LPENUM_SERVICE_STATUS_PROCESSW = ^ENUM_SERVICE_STATUS_PROCESSW;
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESSW}
_ENUM_SERVICE_STATUS_PROCESSW = record
lpServiceName: LPWSTR;
lpDisplayName: LPWSTR;
ServiceStatusProcess: SERVICE_STATUS_PROCESS;
end;
{$EXTERNALSYM _ENUM_SERVICE_STATUS_PROCESSW}
ENUM_SERVICE_STATUS_PROCESSW = _ENUM_SERVICE_STATUS_PROCESSW;
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESSW}
TEnumServiceStatusProcessW = ENUM_SERVICE_STATUS_PROCESSW;
PEnumServiceStatusProcessW = LPENUM_SERVICE_STATUS_PROCESSW;
{$IFDEF UNICODE}
ENUM_SERVICE_STATUS_PROCESS = ENUM_SERVICE_STATUS_PROCESSW;
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESS}
LPENUM_SERVICE_STATUS_PROCESS = LPENUM_SERVICE_STATUS_PROCESSW;
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESS}
TEnumServiceStatusProcess = TEnumServiceStatusProcessW;
PEnumServiceStatusProcess = PEnumServiceStatusProcessW;
{$ELSE}
ENUM_SERVICE_STATUS_PROCESS = ENUM_SERVICE_STATUS_PROCESSA;
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESS}
LPENUM_SERVICE_STATUS_PROCESS = LPENUM_SERVICE_STATUS_PROCESSA;
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESS}
TEnumServiceStatusProcess = TEnumServiceStatusProcessA;
PEnumServiceStatusProcess = PEnumServiceStatusProcessA;
{$ENDIF}
//
// Structures for the Lock API functions
//
SC_LOCK = LPVOID;
{$EXTERNALSYM SC_LOCK}
LPQUERY_SERVICE_LOCK_STATUSA = ^QUERY_SERVICE_LOCK_STATUSA;
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUSA}
_QUERY_SERVICE_LOCK_STATUSA = record
fIsLocked: DWORD;
lpLockOwner: LPSTR;
dwLockDuration: DWORD;
end;
{$EXTERNALSYM _QUERY_SERVICE_LOCK_STATUSA}
QUERY_SERVICE_LOCK_STATUSA = _QUERY_SERVICE_LOCK_STATUSA;
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUSA}
TQueryServiceLockStatusA = QUERY_SERVICE_LOCK_STATUSA;
PQueryServiceLockStatusA = LPQUERY_SERVICE_LOCK_STATUSA;
LPQUERY_SERVICE_LOCK_STATUSW = ^QUERY_SERVICE_LOCK_STATUSW;
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUSW}
_QUERY_SERVICE_LOCK_STATUSW = record
fIsLocked: DWORD;
lpLockOwner: LPWSTR;
dwLockDuration: DWORD;
end;
{$EXTERNALSYM _QUERY_SERVICE_LOCK_STATUSW}
QUERY_SERVICE_LOCK_STATUSW = _QUERY_SERVICE_LOCK_STATUSW;
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUSW}
TQueryServiceLockStatusW = QUERY_SERVICE_LOCK_STATUSW;
PQueryServiceLockStatusW = LPQUERY_SERVICE_LOCK_STATUSW;
{$IFDEF UNICODE}
QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUSW;
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUS}
LPQUERY_SERVICE_LOCK_STATUS = LPQUERY_SERVICE_LOCK_STATUSW;
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUS}
TQueryServiceLockStatus = TQueryServiceLockStatusW;
PQueryServiceLockStatus = PQueryServiceLockStatusW;
{$ELSE}
QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUSA;
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUS}
LPQUERY_SERVICE_LOCK_STATUS = LPQUERY_SERVICE_LOCK_STATUSA;
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUS}
TQueryServiceLockStatus = TQueryServiceLockStatusA;
PQueryServiceLockStatus = PQueryServiceLockStatusA;
{$ENDIF}
//
// Query Service Configuration Structure
//
LPQUERY_SERVICE_CONFIGA = ^QUERY_SERVICE_CONFIGA;
{$EXTERNALSYM LPQUERY_SERVICE_CONFIGA}
_QUERY_SERVICE_CONFIGA = record
dwServiceType: DWORD;
dwStartType: DWORD;
dwErrorControl: DWORD;
lpBinaryPathName: LPSTR;
lpLoadOrderGroup: LPSTR;
dwTagId: DWORD;
lpDependencies: LPSTR;
lpServiceStartName: LPSTR;
lpDisplayName: LPSTR;
end;
{$EXTERNALSYM _QUERY_SERVICE_CONFIGA}
QUERY_SERVICE_CONFIGA = _QUERY_SERVICE_CONFIGA;
{$EXTERNALSYM QUERY_SERVICE_CONFIGA}
TQueryServiceConfigA = QUERY_SERVICE_CONFIGA;
PQueryServiceConfigA = LPQUERY_SERVICE_CONFIGA;
LPQUERY_SERVICE_CONFIGW = ^QUERY_SERVICE_CONFIGW;
{$EXTERNALSYM LPQUERY_SERVICE_CONFIGW}
_QUERY_SERVICE_CONFIGW = record
dwServiceType: DWORD;
dwStartType: DWORD;
dwErrorControl: DWORD;
lpBinaryPathName: LPWSTR;
lpLoadOrderGroup: LPWSTR;
dwTagId: DWORD;
lpDependencies: LPWSTR;
lpServiceStartName: LPWSTR;
lpDisplayName: LPWSTR;
end;
{$EXTERNALSYM _QUERY_SERVICE_CONFIGW}
QUERY_SERVICE_CONFIGW = _QUERY_SERVICE_CONFIGW;
{$EXTERNALSYM QUERY_SERVICE_CONFIGW}
TQueryServiceConfigW = QUERY_SERVICE_CONFIGW;
PQueryServiceConfigW = LPQUERY_SERVICE_CONFIGW;
{$IFDEF UNICODE}
QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIGW;
{$EXTERNALSYM QUERY_SERVICE_CONFIG}
LPQUERY_SERVICE_CONFIG = LPQUERY_SERVICE_CONFIGW;
{$EXTERNALSYM LPQUERY_SERVICE_CONFIG}
TQueryServiceConfig = TQueryServiceConfigW;
PQueryServiceConfig = PQueryServiceConfigW;
{$ELSE}
QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIGA;
{$EXTERNALSYM QUERY_SERVICE_CONFIG}
LPQUERY_SERVICE_CONFIG = LPQUERY_SERVICE_CONFIGA;
{$EXTERNALSYM LPQUERY_SERVICE_CONFIG}
TQueryServiceConfig = TQueryServiceConfigA;
PQueryServiceConfig = PQueryServiceConfigA;
{$ENDIF}
//
// Function Prototype for the Service Main Function
//
type
LPSERVICE_MAIN_FUNCTIONW = procedure (dwNumServicesArgs: DWORD;
lpServiceArgVectors: LPWSTR); stdcall;
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTIONW}
LPSERVICE_MAIN_FUNCTIONA = procedure (dwNumServicesArgs: DWORD;
lpServiceArgVectors: LPSTR); stdcall;
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTIONA}
TServiceMainFunctionA = LPSERVICE_MAIN_FUNCTIONA;
TServiceMainFunctionW = LPSERVICE_MAIN_FUNCTIONW;
{$IFDEF UNICODE}
LPSERVICE_MAIN_FUNCTION = LPSERVICE_MAIN_FUNCTIONW;
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTION}
TServiceMainFunction = LPSERVICE_MAIN_FUNCTIONW;
{$ELSE}
LPSERVICE_MAIN_FUNCTION = LPSERVICE_MAIN_FUNCTIONA;
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTION}
TServiceMainFunction = LPSERVICE_MAIN_FUNCTIONA;
{$ENDIF}
//
// Service Start Table
//
LPSERVICE_TABLE_ENTRYA = ^SERVICE_TABLE_ENTRYA;
{$EXTERNALSYM LPSERVICE_TABLE_ENTRYA}
_SERVICE_TABLE_ENTRYA = record
lpServiceName: LPSTR;
lpServiceProc: LPSERVICE_MAIN_FUNCTIONA;
end;
{$EXTERNALSYM _SERVICE_TABLE_ENTRYA}
SERVICE_TABLE_ENTRYA = _SERVICE_TABLE_ENTRYA;
{$EXTERNALSYM SERVICE_TABLE_ENTRYA}
TServiceTableEntryA = SERVICE_TABLE_ENTRYA;
PServiceTableEntryA = LPSERVICE_TABLE_ENTRYA;
LPSERVICE_TABLE_ENTRYW = ^SERVICE_TABLE_ENTRYW;
{$EXTERNALSYM LPSERVICE_TABLE_ENTRYW}
_SERVICE_TABLE_ENTRYW = record
lpServiceName: LPWSTR;
lpServiceProc: LPSERVICE_MAIN_FUNCTIONW;
end;
{$EXTERNALSYM _SERVICE_TABLE_ENTRYW}
SERVICE_TABLE_ENTRYW = _SERVICE_TABLE_ENTRYW;
{$EXTERNALSYM SERVICE_TABLE_ENTRYW}
TServiceTableEntryW = SERVICE_TABLE_ENTRYW;
PServiceTableEntryW = LPSERVICE_TABLE_ENTRYW;
{$IFDEF UNICODE}
SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRYW;
LPSERVICE_TABLE_ENTRY = LPSERVICE_TABLE_ENTRYW;
TServiceTableEntry = TServiceTableEntryW;
PServiceTableEntry = PServiceTableEntryW;
{$ELSE}
SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRYA;
LPSERVICE_TABLE_ENTRY = LPSERVICE_TABLE_ENTRYA;
TServiceTableEntry = TServiceTableEntryA;
PServiceTableEntry = PServiceTableEntryA;
{$ENDIF}
//
// Prototype for the Service Control Handler Function
//
LPHANDLER_FUNCTION = procedure (dwControl: DWORD); stdcall;
{$EXTERNALSYM LPHANDLER_FUNCTION}
THandlerFunction = LPHANDLER_FUNCTION;
LPHANDLER_FUNCTION_EX = function (dwControl, dwEventType: DWORD;
lpEventData, lpContext: LPVOID): DWORD; stdcall;
{$EXTERNALSYM LPHANDLER_FUNCTION_EX}
THandlerFunctionEx = LPHANDLER_FUNCTION_EX;
///////////////////////////////////////////////////////////////////////////
// API Function Prototypes
///////////////////////////////////////////////////////////////////////////
function ChangeServiceConfigA(hService: SC_HANDLE; dwServiceType, dwStartType,
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCSTR;
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
lpDisplayName: LPCSTR): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfigA}
function ChangeServiceConfigW(hService: SC_HANDLE; dwServiceType, dwStartType,
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCWSTR;
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
lpDisplayName: LPCWSTR): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfigW}
{$IFDEF UNICODE}
function ChangeServiceConfig(hService: SC_HANDLE; dwServiceType, dwStartType,
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCWSTR;
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
lpDisplayName: LPCWSTR): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfig}
{$ELSE}
function ChangeServiceConfig(hService: SC_HANDLE; dwServiceType, dwStartType,
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCSTR;
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
lpDisplayName: LPCSTR): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfig}
{$ENDIF}
function ChangeServiceConfig2A(hService: SC_HANDLE; dwInfoLevel: DWORD;
lpInfo: LPVOID): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfig2A}
function ChangeServiceConfig2W(hService: SC_HANDLE; dwInfoLevel: DWORD;
lpInfo: LPVOID): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfig2W}
{$IFDEF UNICODE}
function ChangeServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWORD;
lpInfo: LPVOID): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfig2}
{$ELSE}
function ChangeServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWORD;
lpInfo: LPVOID): BOOL; stdcall;
{$EXTERNALSYM ChangeServiceConfig2}
{$ENDIF}
function CloseServiceHandle(hSCObject: SC_HANDLE): BOOL; stdcall;
{$EXTERNALSYM CloseServiceHandle}
function ControlService(hService: SC_HANDLE; dwControl: DWORD;
var lpServiceStatus: SERVICE_STATUS): BOOL; stdcall;
{$EXTERNALSYM ControlService}
function CreateServiceA(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCSTR;
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
lpBinaryPathName, lpLoadOrderGroup: LPCSTR; lpdwTagId: LPDWORD;
lpDependencies, lpServiceStartName, lpPassword: LPCSTR): SC_HANDLE; stdcall;
{$EXTERNALSYM CreateServiceA}
function CreateServiceW(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCWSTR;
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
lpBinaryPathName, lpLoadOrderGroup: LPCWSTR; lpdwTagId: LPDWORD;
lpDependencies, lpServiceStartName, lpPassword: LPCWSTR): SC_HANDLE; stdcall;
{$EXTERNALSYM CreateServiceW}
{$IFDEF UNICODE}
function CreateService(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCWSTR;
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
lpBinaryPathName, lpLoadOrderGroup: LPCWSTR; lpdwTagId: LPDWORD;
lpDependencies, lpServiceStartName, lpPassword: LPCWSTR): SC_HANDLE; stdcall;
{$EXTERNALSYM CreateService}
{$ELSE}
function CreateService(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCSTR;
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
lpBinaryPathName, lpLoadOrderGroup: LPCSTR; lpdwTagId: LPDWORD;
lpDependencies, lpServiceStartName, lpPassword: LPCSTR): SC_HANDLE; stdcall;
{$EXTERNALSYM CreateService}
{$ENDIF}
function DeleteService(hService: SC_HANDLE): BOOL; stdcall;
{$EXTERNALSYM DeleteService}
function EnumDependentServicesA(hService: SC_HANDLE; dwServiceState: DWORD;
lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD; var pcbBytesNeeded,
lpServicesReturned: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumDependentServicesA}
function EnumDependentServicesW(hService: SC_HANDLE; dwServiceState: DWORD;
lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD; var pcbBytesNeeded,
lpServicesReturned: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumDependentServicesW}
{$IFDEF UNICODE}
function EnumDependentServices(hService: SC_HANDLE; dwServiceState: DWORD;
lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD; var pcbBytesNeeded,
lpServicesReturned: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumDependentServices}
{$ELSE}
function EnumDependentServices(hService: SC_HANDLE; dwServiceState: DWORD;
lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD; var pcbBytesNeeded,
lpServicesReturned: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumDependentServices}
{$ENDIF}
function EnumServicesStatusA(hSCManager: SC_HANDLE; dwServiceType: DWORD;
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD;
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatusA}
function EnumServicesStatusW(hSCManager: SC_HANDLE; dwServiceType: DWORD;
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD;
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatusW}
{$IFDEF UNICODE}
function EnumServicesStatus(hSCManager: SC_HANDLE; dwServiceType: DWORD;
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD;
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatus}
{$ELSE}
function EnumServicesStatus(hSCManager: SC_HANDLE; dwServiceType: DWORD;
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD;
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatus}
{$ENDIF}
function EnumServicesStatusExA(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
pszGroupName: LPCSTR): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatusExA}
function EnumServicesStatusExW(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
pszGroupName: LPCWSTR): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatusExW}
{$IFDEF UNICODE}
function EnumServicesStatusEx(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
pszGroupName: LPCWSTR): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatusEx}
{$ELSE}
function EnumServicesStatusEx(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
pszGroupName: LPCSTR): BOOL; stdcall;
{$EXTERNALSYM EnumServicesStatusEx}
{$ENDIF}
function GetServiceKeyNameA(hSCManager: SC_HANDLE; lpDisplayName: LPCSTR;
lpServiceName: LPSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
{$EXTERNALSYM GetServiceKeyNameA}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -