C0ffe1n
Сообщений: 5
Оценки: 0
Присоединился: 2006-11-29 02:20:30.003333
|
Оказывется есть другой вариант, я все таки решил эту проблему. Оценив помощь, выкладываю исходник для тех кто так же сталкнется с такой проблемой.
type
WKSTA_INFO_100 = record
wki100_platform_id: Integer;
wki100_computername: PWideChar;
wki100_langroup: PWideChar;
wki100_ver_major: Integer;
wki100_ver_minor: Integer;
end;
//WinNT UNICODE equivalents from NETAPI32.DLL
TWinNT_NetWkstaGetInfo = function(ServerName: PWideChar; level: Integer; var
BufPtr: Pointer): Integer;
stdcall;
TWinNT_NetApiBufferFree = function(BufPtr: Pointer): Integer;
stdcall;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetDomainName: AnsiString;
var
WinNT_NetWkstaGetInfo: TWinNT_NetWkstaGetInfo;
WinNT_NetApiBufferFree: TWinNT_NetApiBufferFree;
WSNT: ^WKSTA_INFO_100;
EC: DWORD;
hNETAPI: THandle;
begin
try
Result := '';
//Загружаем Длл'ку
hNETAPI := LoadLibrary('NETAPI32.DLL');
//получаем адрес указанных айпишек
WinNT_NetWkstaGetInfo := GetProcAddress(hNETAPI, 'NetWkstaGetInfo');
WinNT_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree');
//вызываем функцию для получения инфы в структуру WSNT типа WKSTA_INFO_100
EC := WinNT_NetWkstaGetInfo(nil, 100, Pointer(WSNT));
//проверяем на наличие ошибки
if EC = 0 then
begin
//получаем имя РАБОЧЕЙ ГРУППЫ
Result := WideCharToString(WSNT^.wki100_langroup);
//освобождаем структуру
WinNT_NetApiBufferFree(Pointer(WSNT));
end;
finally
if hNETAPI <> 0 then
//освобождаем Длл'ку
FreeLibrary(hNETAPI);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//Результат на экран!
ShowMessage(GetDomainName);
end;
|