Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как опреледить имя компьютера [D3, D5, Win95/98, WinXP]


VladTen ©   (2002-12-11 09:31:00) 

Подскажите пожалуйста. Как определить имя компьютера, и к какой рабочей группе он принадлежит.


VladTen   (2002-12-11 12:11:00) [1]

Всем большое спасибо, вроде все получилось.


VladTen   (2002-12-11 12:05:00) [2]

Сейчас попробуем


Игорь Шевченко   (2002-12-11 10:54:00) [3]

К какой рабочей группе:


type
TNetGetJoinInformation =
function (const lpServer : LPWSTR; var lpNameBuffer : LPWSTR;
var JoinStatus : Integer) : Integer; stdcall;
TNetApiBufferFree =
function (lpBuffer : Pointer) : Integer; stdcall;

const
{ NetGetJoinInformation join type codes }
NetSetupUnknownStatus = 0;
NetSetupUnjoined = 1;
NetSetupWorkgroupName = 2;
NetSetupDomainName = 3;
var
_fnNetGetJoinInformation : TNetGetJoinInformation = TNetGetJoinInformation(-1);
_fnNetapiBufferFree : TNetApiBufferFree = TNetApiBufferFree(-1);

function _InternalQueryNetGetJoinInformation (const lpServer : LPWSTR;
var lpNameBuffer : LPWSTR; var JoinStatus : Integer) : Integer;
begin
if Integer(@_fnNetGetJoinInformation) = -1 then
if HSQuerySystemInfo (hsiWin2000OrLater) then
@_fnNetGetJoinInformation := GetProcAddress (LoadLibrary ("netapi32"),
"NetGetJoinInformation")
else
@_fnNetGetJoinInformation := nil;
if Assigned(_fnNetGetJoinInformation) then
Result := _fnNetGetJoinInformation(lpServer, lpNameBuffer, JoinStatus)
else
Result := 127;
end;

function _InternalNetapiBufferFree (Buffer : Pointer) : Integer;
begin
if Integer(@_fnNetapiBufferFree) = -1 then
if HSQuerySystemInfo (hsiWin2000OrLater) then
@_fnNetapiBufferFree := GetProcAddress (GetModuleHandle ("netapi32"),
"NetApiBufferFree")
else
@_fnNetapiBufferFree := nil;
if Assigned(_fnNetapiBufferFree) then
Result := _fnNetapiBufferFree(Buffer)
else
Result := 127;
end;

function _InternalIsComputerJoinedToDomain : Boolean;
var
JoinName : PWideChar;
JoinStatus : Integer;
begin
if HSQuerySystemInfo (hsiWin2000OrLater) then
if NOT _JoinTypeDetermined then begin
if (_InternalQueryNetGetJoinInformation (nil,
JoinName, JoinStatus) = 0) then begin
if Assigned(JoinName) then
_InternalNetapiBufferFree (JoinName);
if JoinStatus = NetSetupDomainName then
_JoinedToDomain := true;
end;
_JoinTypeDetermined := true;
end;
Result := _JoinedToDomain;
end;


Den75   (2002-12-11 10:46:00) [4]

из найденого в и-нете
function CompName: string; //Определение имени компутера
var
dwSize: Cardinal;
szBuffer: PChar;
begin
dwSize := MAX_COMPUTERNAME_LENGTH + 1;
GetMem(szBuffer, dwSize);
try
if GetComputerName(szBuffer, dwSize) then
Result := string(szBuffer)
else
Result := "неизвестно";
finally
FreeMem(szBuffer, dwSize);
end;
end;


FreeLancer   (2002-12-11 09:42:00) [5]


> Первое GetComputerName

Да, для локальной станции.


Anatoly Podgoretsky   (2002-12-11 09:38:00) [6]

Первое GetComputerName


Наверх

Титульная страница Поиск, карта сайта Написать письмо