nt servis kontrolü

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

nt servis kontrolü

Mesaj gönderen salvation »

merhaba;

bir servisin o anda çalışıp çalışmadığını nasıl kontrol ederiz? Örneğin apache'nin. "net start","net stop" dışında "net status apache" gibi bir komut yokmu? Ben "net " komutlarını araştırdım fakat buna benzer birşey bulamadım?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

XP'de net start komutu başlamış servisleri gösteriyor. Ancak diğer sistemlerde çalışır mı bilmiyorum.

MSDN'de araştırmak iyi olacaktır.

Kolay gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

viewtopic.php?t=3955

burda varmış ;)

Meşhur sözü unuttuk :ara Arama, :ara Arama, :ara Arama :)

Kolay gelsin.
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

ShellApi, WinSvc unitleri "GetServiceStatus" adlı bir fonksiyona,yani servisin durumunu veren fonksiyona sahip değiller. int.de Fonksiyonu aradığımda Jedi - JclSvcCtrl unitinde böyle bir fonks. olduğunu buldum.Şu an o bileşeni indiriyorum, ama makalede böyle birşeyden bahsedilmemiş?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kod: Tümünü seç

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; 
Sanki makaledeki bu kod parcası biraz islenirse istediginiz olur gibi
cevap makalenin icinden cıkartılabilir.
her zaman pismis as bulamaz isek pisirmeyi de ogrenmeliyiz.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

evet makalede biraz değişiklik yapılınca oluyor. Teşekkür ederim, ihtiyacı olan arkadaşlar varsa, aşağıdaki gibi sorunsuz çalışıyor...

Kod: Tümünü seç

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('apache'), SERVICE_ALL_ACCESS);
  if ServiceHandle = 0 then
  begin
    CloseServiceHandle(SCM);
    raise Exception.Create('Apache Servisi Açılamadı/Galiba Yok. Hata: ' + SysErrorMessage(getLastError));
  end;

  if Res then
  begin
    Res := QueryServiceStatus(ServiceHandle, Status);
    if Status.dwCurrentState = SERVICE_RUNNING then
        showmessage('RUNNING')
    else
      if Status.dwCurrentState = SERVICE_STOPPED then
        showmessage('STOPPED');
      QueryServiceStatus(ServiceHandle, Status);
  end;
  CloseServiceHandle(SCM);
end;
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

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;
kusura bakmayın.. :oops:
DeveloperToolKit

..::|YeşilMavi|::..
Cevapla