Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Computername auslesen m. Programm auf Netzlaufwerk

  Alt 5. Jan 2007, 09:50
Hallo Ben,

dein Programm kennt seinen Speicherort - ParamStr(0). Über die Netzwerkfunktionen kannst du das Share zum Laufwerksbuchstaben ermitteln und Teil des so gewonnenen UNC-Namens ist der DNS bzw. Maschinenname:

Delphi-Quellcode:
uses
  StrUtils;

function GetConnection(const DriveName: String): String;
var
  unc: array of Char;
  size: Cardinal;
begin
  size := 0;
  if WNetGetConnection(PChar(DriveName), nil, size) = ERROR_MORE_DATA then
  begin
    SetLength(Result, Pred(size));
    WNetGetConnection(PChar(DriveName), @Result[1], size);
  end else Result := '';
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  drive, share, machine: String;
begin
  drive := ExtractFileDrive(ParamStr(0));
  share := GetConnection(drive);
  machine := Copy(share, 3, PosEx('\', share, 3) - 3);
  ShowMessage(machine);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat