Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Показать диалог выбора домена

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Показать диалог выбора домена

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  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;

Here's the translation of the content into Russian:

Код написан на Delphi и используется для отображения диалогового окна, которое позволяет пользователю выбрать компьютер или домен, к которому он хочет подключиться или войти.

Процесс выбора диалога выглядит следующим образом:

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('не выбран компьютер');
end;

В этом коде, когда кнопка нажата, она вызывает функцию ComputerBrowser. Эта функция отображает диалоговое окно, которое позволяет пользователю выбрать компьютер или домен. Выбранный текст затем отображается в сообщении.

Функция ComputerBrowser использует следующие константы:

FOCUSDLG_SERVERS_ONLY   = $00010000;
FOCUSDLG_SERVERS_DOMAINS  = $00020000;
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;

Эти константы используются для указания опций, которые должны быть отображены в диалоговом окне.

Процедура ShowServerDialog также показана. Эта процедура отображает диалог сервера и возвращает выбранный текст.

Показывается диалог выбора домена для подключения к компьютеру или домену на платформе Windows NT.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диалоги и Фреймы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-02 21:00:39/0.0062530040740967/1