AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Herausfinden ob ein bestimmter Service installiert ist
Thema durchsuchen
Ansicht
Themen-Optionen

Herausfinden ob ein bestimmter Service installiert ist

Ein Thema von toyoman · begonnen am 4. Mai 2005 · letzter Beitrag vom 4. Mai 2005
Antwort Antwort
Seite 2 von 2     12   
NicoDE
(Gast)

n/a Beiträge
 
#11

Re: Herausfinden ob ein bestimmter Service installiert ist

  Alt 4. Mai 2005, 13:34
Delphi-Quellcode:
uses
   WinSvc;

type
  TAnswer = (aUnknown, aYes, aNo);

function IsServiceInstalled(const MachineName, ServiceName: string;
  ServiceType: DWORD = SERVICE_DRIVER or SERVICE_WIN32;
  ServiceState: DWORD = SERVICE_STATE_ALL): TAnswer;
const
  MAX_SERVICE_NAME = 256;
  MAX_DISPLAY_NAME = 256;
type
  PEnumServiceStatusBuffer = ^TEnumServiceStatusBuffer;
  TEnumServiceStatusBuffer = record
    EnumService: TEnumServiceStatus;
    ServiceName: array [0..MAX_SERVICE_NAME-1] of Char;
    DisplayName: array [0..MAX_DISPLAY_NAME-1] of Char;
  end;
var
  SCManager: SC_HANDLE;
  EnumBuffer: array [0..7] of TEnumServiceStatusBuffer; // ~4KB Stack size
  BytesNeeded: DWORD;
  ResumeHandle: DWORD;
  ServicesReturned: DWORD;
  Service: PEnumServiceStatus;
  Index: DWORD;
begin
  Result := aUnknown;
  SCManager := OpenSCManager(PChar(MachineName), SERVICES_ACTIVE_DATABASE,
    SC_MANAGER_ENUMERATE_SERVICE);
  if (SCManager <> 0) then
    try
      Result := aNo;
      ResumeHandle := 0;
      while EnumServicesStatus(SCManager, ServiceType, ServiceState,
        EnumBuffer[0].EnumService, SizeOf(EnumBuffer), BytesNeeded,
        ServicesReturned, ResumeHandle) or
        (GetLastError = ERROR_MORE_DATA) do
      begin
        Service := @EnumBuffer[0].EnumService;
        for Index := 1 to ServicesReturned do
        begin
          if (StrIComp(PChar(ServiceName), Service.lpServiceName) = 0) then
          begin
            Result := aYes;
            Break;
          end;
          Inc(Service);
        end;
        if (Result = aYes) then
          Break;
        if (ResumeHandle = 0) then
          Break;
      end;
    finally
      CloseServiceHandle(SCManager);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  case IsServiceInstalled(EmptyStr, 'Messenger') of
    aUnknown:
      ShowMessage('Vielleicht.');
    aYes:
      ShowMessage('Scheint so.');
    aNo:
      ShowMessage('Wohl nicht.');
  else
    ShowMessage('Hmmm.');
  end;
end;
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#12

Re: Herausfinden ob ein bestimmter Service installiert ist

  Alt 4. Mai 2005, 13:52
Danke Nico! Das spart mir Zeit
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#13

Re: Herausfinden ob ein bestimmter Service installiert ist

  Alt 4. Mai 2005, 14:00
Zitat von Mephistopheles:
Ja das war ein Hinweis schon weiter oben von Nico. Aber du ignorierst offenbar Nicos Vorschlag geflissentlich, weil du dann die Doku durchlesen müßtest o.ä?!

Ich werde mich mal eben an ein kleines Beispiel setzen, damit du nicht zu sehr suchen mußt ... dauert ein paar Minuten. Also Geduld.
hääää? ich hab überhaupt nichts ignoriert!!
ich hab lediglich die frage von sakura beantwortet!
ich würds nochmals durchlesen
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#14

Re: Herausfinden ob ein bestimmter Service installiert ist

  Alt 4. Mai 2005, 14:10
Danke an Nico und die Beteiligten

Es funzt

aber nochmal... ich hab nicht gewartet das mir einer den code hinfözelt nei nein..
das habt ihr falsch verstanden. ich habe nix dergleichen verlauten lassen, also bitte nicht alle Foren User in den gleichen Topf werfen. Habe in der Zwischenzeit nämlich im Internet geforscht und ähnliche Funktionen aufgetrieben... war also nicht untätig wie mir der Mephistopheles unterstellen will...

amen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz