Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.045 c
9-1077298936
Ser_00
2004-02-20 20:42
2004.06.20
Ссылки.


14-1086093727
__
2004-06-01 16:42
2004.06.20
Как функционируют нормальные группы разработчиков?


3-1085662064
Sasha73
2004-05-27 16:47
2004.06.20
Локальная BD (один файл) ?


3-1085635989
evgen
2004-05-27 09:33
2004.06.20
Экспорт содержимого DBGrid в Excel


1-1086270348
Alexis
2004-06-03 17:45
2004.06.20
Обращение к отдельным битам в DWORD





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский