rt

解决方案 »

  1.   

    function GetDomainName: 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;
      

  2.   

    To aiirii(ari-爱的眼睛) :
      Win98下不支持!小弟正是要解决98下获取域名的问题!拜托再指点一下!