Avatar billede djones Nybegynder
03. februar 2003 - 06:04 Der er 3 kommentarer og
1 løsning

Workgroup via API

Hvordan bestemmer man sin workgroup via API kald?
Jeg har et program hvor jeg skal bruge workgroup'en, men den skal IKKE hentes fra registreringsdatabasen.
Avatar billede somaliomar Praktikant
03. februar 2003 - 07:18 #1
Noget lign. du leder efter?


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;
Avatar billede djones Nybegynder
04. februar 2003 - 09:30 #2
Jeg tester det lige, og finder ud af om jeg kan bruge det
Avatar billede djones Nybegynder
04. februar 2003 - 09:34 #3
Fantastisk, det virker jo ;-) Tusind tak, det var lige det jeg havde brug for
Avatar billede somaliomar Praktikant
04. februar 2003 - 11:27 #4
Takker for points
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester