Форум: "Сети";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
ВнизКак програмно узнать сетевое имя рабочей группы для 9x, NT? Найти похожие ветки
← →
Style © (2004-04-26 18:26) [0]помогите по сабжу, что-то ничего не найду.
← →
Игорь Шевченко © (2004-04-26 18:31) [1]Чьей ?
← →
Игорь Шевченко © (2004-04-26 18:32) [2]NetGetJoinInformation
← →
Style © (2004-04-26 19:50) [3]TNETSETUP_JOIN_STATUS = (
NetSetupUnknownStatus = 0,
NetSetupUnjoined,
NetSetupWorkgroupName,
NetSetupDomainName);
function NetGetJoinInformation(
lpServer: pwidechar;
lpBuffer: pwidechar;
BufferType: TNETSETUP_JOIN_STATUS): integer; stdcall; external "netapi32.dll";
У меня не получается. Может не правильно импортирую?
← →
Rouse_ © (2004-04-26 19:57) [4]Примерно так:
function TMainForm.GetGroup(const CompName: String): String;
var
CurrRes: TNetResource;
ParentName: array [0..1] of TNetResource;
Enum: DWORD;
Err: Integer;
begin
with CurrRes do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_DISK;
dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;
dwUsage := RESOURCEUSAGE_CONTAINER;
lpLocalName := "";
lpRemoteName := PChar("\\" + CompName);
lpComment := "";
lpProvider := nil;
end;
Enum := SizeOf(ParentName);
Err := WNetGetResourceParent(@CurrRes, @ParentName, Enum);
if Err = NO_ERROR then
begin
Result := ParentName[0].lpRemoteName;
if Result = "" then Result := RES_COM_NO;
end
else
MessageDlg(ERR_PAR, mtError, [mbOK], 0);
end;
← →
Rouse_ © (2004-04-26 20:07) [5]Да, константы:
const
RES_COM_NO = "Отсутствует";
ERR_PAR = "Ошибка выполнения WNetGetResourceParent";
← →
Style © (2004-04-26 20:58) [6]Спасибо Rouse_!
Только без провайдера не работало...
wnetgetproviderName(WNNC_NET_LANMAN,lpProviderName,Sz )
← →
Игорь Шевченко © (2004-04-26 22:14) [7]И на закуску тоже самое, только под NT и недокументированными функциями:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfMain = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
end;
var
fMain: TfMain;
implementation
uses
HSNetApi;
{$R *.dfm}
procedure TfMain.FormCreate(Sender: TObject);
var
S: PWideChar;
rc: DWORD;
begin
rc := NetpGetDomainName(@S);
if rc = NOERROR then begin
Edit1.Text := WideCharToString(S);
NetApiBufferFree(S);
end else
Edit1.Text := Format("Error %d", [rc]);
rc := NetpGetComputerName(@S);
if rc = NOERROR then begin
Edit2.Text := WideCharToString(S);
NetApiBufferFree(S);
end else
Edit2.Text := Format("Error %d", [rc]);
end;
end.unit HSNetApi;
interface
uses
Windows;
function NetApiBufferFree (lpBuffer : Pointer) : Integer; stdcall;
function NetpGetDomainName (lpBuffer : Pointer) : Integer; stdcall;
function NetpGetComputerName (lpBuffer : Pointer) : Integer; stdcall;
implementation
uses
SysUtils;
{ NETAPI32.DLL functions }
type
TNetApiBufferFree =
function (lpBuffer : Pointer) : Integer; stdcall;
TNetpGetDomainName =
function (lpBuffer : Pointer) : Integer; stdcall;
TNetpGetComputerName =
function (lpBuffer : Pointer) : Integer; stdcall;
const
netapidllname = "netapi32.dll";
var
NetApiDllHandle: THandle;
_NetApiBufferFree : TNetApiBufferFree;
_NetpGetDomainName : TNetpGetDomainName;
_NetpGetComputerName : TNetpGetComputerName;
function InitNetApi : Boolean;
begin
if NetApiDllHandle = 0 then
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
NetApiDllHandle := LoadLibrary(NetApidllname);
if NetApiDllHandle <> 0 then begin
@_NetApiBufferFree := GetProcAddress(NetApiDllHandle,
"NetApiBufferFree");
@_NetpGetDomainName := GetProcAddress(NetApiDllHandle,
"NetpGetDomainName");
@_NetpGetComputerName := GetProcAddress(NetApiDllHandle,
"NetpGetComputerName");
end;
end;
Result := (NetApiDllHandle <> 0);
end;
function NetApiNotImplemented : Integer;
begin
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
Result := ERROR_PROC_NOT_FOUND;
end;
function NetApiBufferFree (lpBuffer : Pointer) : Integer; stdcall;
begin
if InitNetApi and Assigned(_NetApiBufferFree) then
Result := _NetApiBufferFree(lpBuffer)
else
Result := NetApiNotImplemented;
end;
function NetpGetDomainName (lpBuffer : Pointer) : Integer; stdcall;
begin
if InitNetApi and Assigned(_NetpGetDomainName) then
Result := _NetpGetDomainName(lpBuffer)
else
Result := NetApiNotImplemented;
end;
function NetpGetComputerName (lpBuffer : Pointer) : Integer; stdcall;
begin
if InitNetApi and Assigned(_NetpGetComputerName) then
Result := _NetpGetComputerName(lpBuffer)
else
Result := NetApiNotImplemented;
end;
initialization
finalization
if NetApiDllHandle <> 0 then
FreeLibrary(NetApiDllHandle);
end.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c