![]() |
Service Status auslesen
Also ich habe mir da 2 Funktionen aus dem Forum geholt. Nun beide kann ich auch problemlos auslesen. Nun kommt aber mein Problem
den Dienst bei welchem ich den ServiceGetStatus auslesen will kann auf jedem Computer unterschiedlich 'SQLANYs_sql'+ Computername. Das funktioniert nun aber nicht da die inkompatible Typen verwende. PAnsiChar & String. kann mir da jemand helfen.
Delphi-Quellcode:
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
function FComputername: String;
var CompName: Array [0 .. 256] of char; size: DWORD; begin size := 256; GetComputerName(Compname, size); Result := CompName; end; {} function ServiceGetStatus(sMachine, sService: PChar): DWORD; var SCManHandle, SvcHandle: SC_Handle; SS: TServiceStatus; dwStat: DWORD; begin sService := [b]'SQLANYs_sql'+ FComputername;[/b] dwStat := 0; // Open service manager handle. SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT); if (SCManHandle > 0) then begin SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS); // if Service installed if (SvcHandle > 0) then begin // SS structure holds the service status (TServiceStatus); if (QueryServiceStatus(SvcHandle, SS)) then dwStat := ss.dwCurrentState; CloseServiceHandle(SvcHandle); end; CloseServiceHandle(SCManHandle); end; Result := dwStat; end; function ServiceRunning(sMachine, sService: PChar): Boolean; begin Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService); end; |
Re: Service Status auslesen
Der Sinn von Prozeduren und Funktionen ist gerade, dass man ihnen Parameter übergeben kann. Warum überschreibst du die denn direkt? Wenn du die Funktion ServiceRunning aufrufst, musst du einfach nur den Parameter übergeben. Den Parameter dann zu überschreiben ist absolut unschön, bishin sogar falsch.
Ansonsten kannst du einen String zu PChar umwandeln:
Delphi-Quellcode:
Ein PChar ist nur ein Zeiger auf die Speicherstelle, an der ein String beginnt der mit dem Zeichen #0 endet.
EinPCHar := @EinString[1];
Und bitte verwende die [delphi]- oder [pre]-Tags für Quellcodes. Chris |
Re: Service Status auslesen
Hi,
ich bin auch gerade dabei etwas mit Services zu machen! Allerdings möchte ich gerne den Starttyp des Dienstes abändern in Manuell. wäre das möglich? mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz