W jaki sposób odczytać grupe roboczą na podstawie IP
(192.168.0.10 => OSIEDLE).
Po przeszukaniu tego forum znalazłem procedurke o którą mi chodziło, przynajmniej tak mi się wydawało na początku.
Niestety odczytuje ona grupe roboczą dla systemów NT a nie dla 9x (przynajmniej dla 98 pokazuje "???").
Mam nadzieję że ktoś będzie w stanie mi pomóc w jej przerobieniu tak aby odczytywała grupe roboczą dla wszystkich systemów,
lub ktoś zaproponuje inne rozwązanie.
THostInfo = record
username: PWideChar;
logon_domain: PWideChar;
oth_domains: PWideChar;
logon_server: PWideChar;
function
NetWkstaUserEnum(servername: PWideChar;
level : DWord;
var bufptr: Pointer;
prefmaxlen: DWord;
var entriesread: PDWord;
var totalentries: PDWord;
var resumehandle: PDWord ): LongInt ;
stdcall; external 'netapi32.dll' name 'NetWkstaUserEnum';
function GetNetUser(HostName: WideString): THostInfo;
var
Info: Pointer;
ElTotal: PDWord;
ElCount: PDWord;
Resume: PDWord;
Error: LongInt;
begin
Resume:=0;
NetWkstaUserEnum(PWideChar(HostName),1, Info,0,
ElCount,ElTotal,Resume);
Error:=NetWkstaUserEnum(PWideChar(HostName),1,Info,256*Integer(ElTotal),
ElCount,ElTotal,Resume);
case Error of
ERROR_ACCESS_DENIED: Result.UserName:= 'ERROR - ACCESS DENIED';
ERROR_MORE_DATA: Result.UserName:= 'ERROR - MORE DATA';
ERROR_INVALID_LEVEL: Result.UserName:= 'ERROR - INVALID LEVEL';
else if Info <> nil
then Result:=THostInfo(info^)
else begin
Result.username:= '???';
Result.logon_domain:= '???';
Result.oth_domains:= '???';
Result.logon_server:= '???';
end;{if}
end;{case}
end; {function}
procedure TForm1.Button1Click(Sender: TObject);
begin
HostInfo := GetNetUser('192.168.0.10'); //nie dziala z gdy sie wpisze host musi byc ip!
with HostInfo do
begin
label1.caption:=HostInfo.logon_domain;
end;
end;
</delphi>