Servisi Başlat
Kod: Tümünü seç
procedure TForm1.btnStartServiceClick(Sender: TObject);
var
SCM: SC_HANDLE;
ServiceHandle: SC_HANDLE;
Res: Boolean;
Temp: PChar;
Status: SERVICE_STATUS;
Err: Integer;
begin
SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCM = 0 then
raise Exception.Create('Servis Yöneticisi Açılamadı. Hata: ' + SysErrorMessage(getLastError));
ServiceHandle := OpenService(SCM, PChar('InterBaseServer'), SERVICE_ALL_ACCESS);
if ServiceHandle = 0 then
begin
CloseServiceHandle(SCM);
raise Exception.Create('Interbase Servisi Açılamadı. Hata: ' + SysErrorMessage(getLastError));
end;
Res := StartService(ServiceHandle, 0, Temp);
if Res then
begin
Res := QueryServiceStatus(ServiceHandle, Status);
while (Res) do
begin
if Status.dwCurrentState = SERVICE_RUNNING then
Break
else
if Status.dwCurrentState = SERVICE_STOPPED then
Break;
QueryServiceStatus(ServiceHandle, Status);
end;
end
else
begin
Err := GetLastError;
if Err <> ERROR_SERVICE_ALREADY_RUNNING then
raise Exception.Create('Interbase Servisi Başlatılamadı. Hata:' + SysErrorMessage(Err));
end;
CloseServiceHandle(SCM);
end;
Kod: Tümünü seç
procedure TForm1.btnStopServiceClick(Sender: TObject);
var
SCM: SC_HANDLE;
ServiceHandle: SC_HANDLE;
Res: Boolean;
Status: SERVICE_STATUS;
begin
SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCM = 0 then
raise Exception.Create('Servis Yöneticisi Açılamadı');
ServiceHandle := OpenService(SCM, PChar('InterBaseServer'), SERVICE_ALL_ACCESS);
if ServiceHandle = 0 then
begin
CloseServiceHandle(SCM);
raise Exception.Create('Interbase Servisi Açılamadı. Hata: ' + SysErrorMessage(getLastError));
end;
Res := ControlService(ServiceHandle, SERVICE_CONTROL_STOP, Status);
if not Res then
if GetLastError <> ERROR_SERVICE_NOT_ACTIVE then
raise Exception.Create('Servis Durdurulamadı');
end;
Kod: Tümünü seç
function GetServiceStatus(const ServiceName: string): SERVICE_STATUS;
var
SCM: SC_HANDLE;
ServiceHandle: SC_HANDLE;
begin
SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCM = 0 then
raise Exception.Create('HATA');
ServiceHandle := OpenService(SCM, PChar(ServiceName), SERVICE_ALL_ACCESS);
if ServiceHandle = 0 then
begin
CloseServiceHandle(SCM);
case GetLastError of
ERROR_ACCESS_DENIED: raise Exception.Create('Yetersiz ayrıcalıklar');
ERROR_INVALID_HANDLE: raise Exception.Create('Geçersiz Handle');
ERROR_INVALID_NAME:raise Exception.Create('Servis Bulunamadı');
ERROR_SERVICE_DOES_NOT_EXIST: raise Exception.Create('Servis bulunamadı');
end;
end;
if not QueryServiceStatus(ServiceHandle, Result) then
raise Exception.Create('Durum Alınamadı');
end;
procedure TForm1.btnStatusServiceClick(Sender: TObject);
var
Status: SERVICE_STATUS;
begin
Status := GetServiceStatus('InterBaseServer');
case Status.dwCurrentState of
1 : ShowMessage('Stopped');
2 : ShowMessage('Start Pending');
3 : ShowMessage('Stop Pending');
4 : ShowMessage('Running');
5 : ShowMessage('Continue Pending');
6 : ShowMessage('Pause Pending');
7 : ShowMessage('Paused');
end;
end;
Kod: Tümünü seç
procedure TForm1.btnRemoveServiceClick(Sender: TObject);
var
SCM: SC_HANDLE;
ServiceHandle: SC_HANDLE;
begin
SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCM = 0 then
raise Exception.Create('Servis Yöneticisi Açılamadı.');
ServiceHandle := OpenService(SCM, PChar('InterbaseServer'), SERVICE_ALL_ACCESS);
if ServiceHandle = 0 then
begin
CloseServiceHandle(SCM);
raise Exception.Create('Servis Açılamadı. Hata: ' + SysErrorMessage(getLastError));
end;
if not DeleteService(ServiceHandle) then
raise Exception.Create('Servis Silinemedi. Hata: ' + SysErrorMessage(getLastError));
CloseServiceHandle(SCM);
end;
Kod: Tümünü seç
procedure TForm1.btnInstallServiceClick(Sender: TObject);
var
SCM: SC_HANDLE;
ServiceHandle: SC_HANDLE;
dwStartType: DWord;
begin
dwStartType := 1;
SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCM = 0 then
raise Exception.Create('Servis Yöneticisi Açılamadı.');
ServiceHandle := CreateService(SCM, PChar('InterBaseServer'), PChar('InterBase'), SERVICE_CHANGE_CONFIG,
SERVICE_WIN32_OWN_PROCESS, dwStartType, SERVICE_ERROR_NORMAL, PChar('c:\ib.exe'), nil, nil, nil, nil, nil);
if ServiceHandle = 0 then
begin
CloseServiceHandle(SCM);
raise Exception.Create('Servis Yükle Hatası: ' + SysErrorMessage(GetLastError));
end;
CloseServiceHandle(SCM);
CloseServiceHandle(ServiceHandle);
end;