Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
functionGetDomainName: AnsiString; type
WKSTA_INFO_100 = record
wki100_platform_id: Integer; wki100_computername: PWideChar; wki100_langroup: PWideChar; wki100_ver_major: Integer; wki100_ver_minor: Integer; end
; WKSTA_USER_INFO_1 = record
wkui1_username: PChar; wkui1_logon_domain: PChar; wkui1_logon_server: PChar; wkui1_oth_domains: PChar; end
; type
//Win9X ANSI prototypes from RADMIN32.DLL and RLOCAL32.DLL TWin95_NetUserGetInfo = function
(ServerName, UserName: PChar; Level: DWORD; var
BfrPtr: Pointer): Integer; stdcall
; TWin95_NetApiBufferFree = function
(BufPtr: Pointer): Integer; stdcall
; TWin95_NetWkstaUserGetInfo = function
(Reserved: PChar; Level: Integer; var
BufPtr: Pointer): Integer; stdcall
; //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
; function
IsWinNT: Boolean; var
VersionInfo: TOSVersionInfo; begin
VersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); Result := GetVersionEx(VersionInfo); if
Result then
Result := VersionInfo.dwPlatformID = VER_PLATFORM_WIN32_NT; end
; var
Win95_NetUserGetInfo: TWin95_NetUserGetInfo; Win95_NetWkstaUserGetInfo: TWin95_NetWkstaUserGetInfo; Win95_NetApiBufferFree: TWin95_NetApiBufferFree; WinNT_NetWkstaGetInfo: TWinNT_NetWkstaGetInfo; WinNT_NetApiBufferFree: TWinNT_NetApiBufferFree; WSNT: ^WKSTA_INFO_100; WS95: ^WKSTA_USER_INFO_1; EC: DWORD; hNETAPI: THandle; begin
try
Result := ''; if
IsWinNT then
begin
hNETAPI := LoadLibrary('NETAPI32.DLL'); if
hNETAPI <> 0 then
begin
@WinNT_NetWkstaGetInfo := GetProcAddress(hNETAPI, 'NetWkstaGetInfo'); @WinNT_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree'); EC := WinNT_NetWkstaGetInfo(nil
, 100, Pointer(WSNT)); if
EC = 0 then
begin
Result := WideCharToString(WSNT^.wki100_langroup); WinNT_NetApiBufferFree(Pointer(WSNT)); end
; end
; end
else
begin
hNETAPI := LoadLibrary('RADMIN32.DLL'); if
hNETAPI <> 0 then
begin
@Win95_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree'); @Win95_NetUserGetInfo := GetProcAddress(hNETAPI, 'NetUserGetInfoA'); EC := Win95_NetWkstaUserGetInfo(nil
, 1, Pointer(WS95)); if
EC = 0 then
begin
Result := WS95^.wkui1_logon_domain; Win95_NetApiBufferFree(Pointer(WS95)); end
; end
; end
; finally
if
hNETAPI <> 0 then
FreeLibrary(hNETAPI); end
; end
; procedure
TForm1.Button1Click(Sender: TObject); begin
ShowMessage(GetDomainName); end
;