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