Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Service Beschreibung aus dessen Namen

  Alt 15. Jun 2007, 12:22
Du musst auch Speicher anfordnern:

Delphi-Quellcode:
uses
  WinSvc;

function ServiceGetDisplayname(sMachine, sService: string; var DisplayName: string): Boolean;
var
  ret : Boolean;
  SCManHandle : SC_Handle;
  Buffer : PChar;
  len : cardinal;
begin
  ret := False;
  len := 0;
  SCManHandle := OpenSCManager(PChar(sMachine), nil, SC_MANAGER_CONNECT);
  if (SCManHandle > 0) then
  begin
    GetServiceDisplayName(SCManHandle, PChar(sService), nil, len);
    if GetLastError = ERROR_INSUFFICIENT_BUFFER then
    begin
      len := len + 1;
      GetMem(Buffer, len);
      ret := GetServiceDisplayName(SCManHandle, PChar(sService), Buffer, len);
      DisplayName := string(Buffer);
      FreeMem(Buffer);
    end;
    CloseServiceHandle(SCManHandle);
  end;
  Result := ret;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Displayname : string;
begin
  if ServiceGetDisplayname('', 'NetLogon', Displayname) then
    ShowMessage(Displayname)
  else
    ShowMessage(SysErrorMessage(GetLastError));
end;
Ich habe die Funktion auch gleich noch mal etwas umgeschrieben, damit eine einfachere Fehlerbehandlung möglich wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat