Code:

{

If you are developing network software for Windows NT,

you usually need to ask the user to select a computer or domain

he wants to connect/login.

}

 

const

FOCUSDLG_DOMAINS_ONLY = 1;

FOCUSDLG_SERVERS_ONLY = 2;

FOCUSDLG_SERVERS_DOMAINS = 3;

FOCUSDLG_BROWSE_LOGON_DOMAIN = $00010000;

FOCUSDLG_BROWSE_WKSTA_DOMAIN = $00020000;

FOCUSDLG_BROWSE_OTHER_DOMAINS = $00040000;

FOCUSDLG_BROWSE_TRUSTING_DOMAINS = $00080000;

FOCUSDLG_BROWSE_WORKGROUP_DOMAINS = $00100000;

FOCUSDLG_BROWSE_ALL_DOMAINS = FOCUSDLG_BROWSE_LOGON_DOMAIN or

   FOCUSDLG_BROWSE_WKSTA_DOMAIN or FOCUSDLG_BROWSE_OTHER_DOMAINS or

   FOCUSDLG_BROWSE_TRUSTING_DOMAINS or FOCUSDLG_BROWSE_WORKGROUP_DOMAINS;

 

 

function SystemFocusDialog(hwndOwner: HWND; dwSelectionFlag: UINT;

wszName: PWideChar; dwBufSize: DWORD; var bOKPressed: Boolean;

wszHelpFile: PWideChar; dwContextHelpId: DWORD): DWORD; stdcall;

external 'ntlanman.dll' Name 'I_SystemFocusDialog';

 

function ComputerBrowser(hWndParent: HWND; wCompName: PWideChar;

dwBufLen: DWORD): Boolean;

var

dwError: DWORD;

begin

Result := False;

dwError := SystemFocusDialog(hWndParent, FOCUSDLG_SERVERS_DOMAINS or

   FOCUSDLG_BROWSE_ALL_DOMAINS,

   wCompName, dwBufLen, Result, nil, 0);

if dwError <> NO_ERROR then Exit;

end;

 

 

procedure TForm1.Button1Click(Sender: TObject);

var

wCompName: array [0..MAX_COMPUTERNAME_LENGTH + 1] of WideChar;

begin

if ComputerBrowser(0, wCompName, MAX_COMPUTERNAME_LENGTH + 1) then

   ShowMessage(wCompName)

else

   ShowMessage('no computer selected');

end;

 

{***************************}

 

// Show the ServerBrowseDialogA0 Dialog

 

type

TServerBrowseDialogA0 = function(hwnd: HWND; pchBuffer: Pointer;

   cchBufSize: DWORD): bool;

stdcall;

 

function ShowServerDialog(AHandle: THandle): string;

var

ServerBrowseDialogA0: TServerBrowseDialogA0;

LANMAN_DLL: DWORD;

buffer: array[0..1024] of char;

bLoadLib: Boolean;

begin

LANMAN_DLL := GetModuleHandle('NTLANMAN.DLL');

if LANMAN_DLL = 0 then

begin

   LANMAN_DLL := LoadLibrary('NTLANMAN.DLL');

   bLoadLib := True;

end;

if LANMAN_DLL <> 0 then

begin @ServerBrowseDialogA0 := GetProcAddress(LANMAN_DLL, 'ServerBrowseDialogA0');

   DialogBox(HInstance, MAKEINTRESOURCE(101), AHandle, nil);

   ServerBrowseDialogA0(AHandle, @buffer, 1024);

   if buffer[0] = '\' then

   begin

     Result := buffer;

   end;

   if bLoadLib then

     FreeLibrary(LANMAN_DLL);

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

label1.Caption := ShowServerDialog(Form1.Handle);

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить