Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Windows Servislerini Kontrol Etmek
#1
Merhabalar, windows servislerini kontrol eden bir program yapma aşamasındayım. Program client ve server olarak iki bölümden oluşuyor.  Diyelimki 10 client'lı bir network var ve ben kullanıcıların yazıcı servislerinin çalışıp çalışmadığını kontrol etmek istiyorum.Örnek: Client tarafında çalışan uygulamamız bizim belirlediğimiz bir servisin durması sonucu(Örn: yazıcı servisi durduğunda server tarafında ''Exp1 bilgisayarında servis durmuştur" uyarısı gibi..) server tabanlı bölümümüzde alarm veriyor. Delphi ile servislerin çalışıp çalışmadığını nasıl kontrol edebilirim? Bu konuda yardımcı olmanız dileği ile..
Cevapla
#2
uses WinSVC;

function isServiceRunning(ServiceName : AnsiString): Boolean;
var 
 aServiceControl : SC_Handle;
 aService : SC_Handle;
 status: TServiceStatus;
begin
 Result := False;
 aService := 0;
 aServiceControl := OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
 if aServiceControl = 0 then Exit;
 try
   aService := OpenService(aServiceControl, PAnsiChar(ServiceName), SERVICE_QUERY_STATUS);
   if aService = 0 then Exit;
   if not QueryServiceStatus(aService, status)
     then Exit;
   Result := status.dwCurrentState = SERVICE_RUNNING;
 finally
   if aService <> 0 then CloseServiceHandle(aService);
   if aServiceControl <> 0 then CloseServiceHandle(aServiceControl)
 end;
end;
There's no place like 127.0.0.1
WWW
Cevapla
#3
(09-10-2017, Saat: 12:35)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
uses WinSVC;

function isServiceRunning(ServiceName : AnsiString): Boolean;
var 
 aServiceControl : SC_Handle;
 aService : SC_Handle;
 status: TServiceStatus;
begin
 Result := False;
 aService := 0;
 aServiceControl := OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
 if aServiceControl = 0 then Exit;
 try
   aService := OpenService(aServiceControl, PAnsiChar(ServiceName), SERVICE_QUERY_STATUS);
   if aService = 0 then Exit;
   if not QueryServiceStatus(aService, status)
     then Exit;
   Result := status.dwCurrentState = SERVICE_RUNNING;
 finally
   if aService <> 0 then CloseServiceHandle(aService);
   if aServiceControl <> 0 then CloseServiceHandle(aServiceControl)
 end;
end;

Gün geçtikçe bu forumu daha çok seviyorum.. Büyüksün üstad. Big Grin
Cevapla
#4
Merhabalar

Gerekli paylaşım güzel olmuş bir sorum olacaktı her winde çalışır mi 7,10 gibi

Teşekkürler
Cevapla
#5
Bir başka alternatif Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol kullanmak:
use ActiveX;

function isServiceRunning(ServiceName: string): Boolean;
const
 wbemFlagForwardOnly = $00000020;
var
 FSWbemLocator : OLEVariant;
 FWMIService   : OLEVariant;
 FWbemObjectSet: OLEVariant;
 FWbemObject   : OLEVariant;
 oEnum         : IEnumvariant;
 iValue        : LongWord;
begin;
 FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
 FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
 FWbemObjectSet:= FWMIService.ExecQuery('SELECT Name, State FROM Win32_Service WHERE Name="'+ServiceName+'" and State="Running"','WQL',wbemFlagForwardOnly);
 oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
 if oEnum.Next(1, FWbemObject, iValue) = S_OK then
 begin
   Result := True;
   FWbemObject := Unassigned;
 end
 else
   Result := False;
end;

Not: WMI kullanarak uzak makinelerdeki hizmetlerin durumunu da sorgulayabilirsiniz.(Kullanıcı adı ve şifre biliniyorsa)

(09-10-2017, Saat: 13:12)r3n4m3 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar

Gerekli paylaşım güzel olmuş bir sorum olacaktı her winde çalışır mi 7,10 gibi

Teşekkürler

Çalışır.
MSDN'ye bakıldığında kullanılan Windows API'lerin desteklendiği işletim sistemleri için şunlar yazıyor:
Minimum supported client -> Windows XP [desktop apps only]
Minimum supported server -> Windows Server 2003 [desktop apps only]

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Windows Hizmetinde Hafıza Yönetimi yhackup 1 81 11-12-2017, Saat: 09:59
Son Yorum: SimaWB
  Amansızca duran Windows hizmeti yhackup 24 569 25-11-2017, Saat: 09:38
Son Yorum: yhackup
  Windows api index hzılı dosya arama veya MFT Master File Table Dosya Arama carsoft 3 327 08-07-2017, Saat: 10:09
Son Yorum: carsoft
  windows powershell pipe uzaktan yönetim masteryoda 2 318 10-05-2017, Saat: 17:21
Son Yorum: masteryoda
  mouse kontrol dilo 2 380 18-02-2017, Saat: 21:01
Son Yorum: witalihakko



Konuyu Okuyanlar: 1 Ziyaretçi