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

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

Delphi , Интернет и Сети , Сеть

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

- Дорогой, ты кого больше любишь? Меня или эту дурацкую штуку, за которой ты проводить целый, св#лочь!!!
- Ну, киса, как ты можешь сравнивать неодушевленный предмет с компьютером?!


{ 
  The "Choose Computer" is a dialog provided by network services 
  (NTLANMAN.DLL) for Windows 2k/NT/XP 
  to display the servers and their computers. 
} 

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;

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

Вот разбивка кода:

  1. Первая секция определяет функцию TServerBrowseDialogA0, экспортированную из библиотеки NTLANMAN.DLL. Функция принимает три параметра: hwnd, pchBuffer и cchBufSize, и возвращает булевое значение.
  2. Вторая секция определяет процедуру ShowServerDialog, которая принимает handle окна (AHandle) как параметр. Она загружает библиотеку NTLANMAN.DLL, получает адрес функции TServerBrowseDialogA0 с помощью GetProcAddress, и затем вызывает эту функцию с предоставленным handle.
  3. Процедура ShowServerDialog также инициализирует буфер (buffer) для хранения результата диалогового окна. Она устанавливает размер буфера в 1024 символа.
  4. Когда диалоговое окно отображается, оно заполняет буфер именем выбранного компьютера или сервера.
  5. Если буфер начинается с обратной косой черты (\), процедура возвращает содержимое буфера как строку.
  6. Наконец, если библиотека была загружена динамически с помощью LoadLibrary, процедура освобождает библиотеку с помощью FreeLibrary.
  7. Третья секция определяет обработчик события для клика кнопки на форме. Когда эта кнопка кликается, она вызывает процедуру ShowServerDialog и устанавливает заголовок метки (label1) в результат.

Чтобы отобразить это диалоговое окно, вам нужно иметь библиотеку NTLANMAN.DLL установленной на вашем системе. Библиотека обычно предоставляется с операционными системами Windows, включая Windows 2k/NT/XP.

Вот пример использования кода:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := ShowServerDialog(Form1.Handle);
end;

function ShowServerDialog(AHandle: THandle): string;
var
  ServerBrowseDialogA0: TServerBrowseDialogA0;
  LANMAN_DLL: DWORD;
  buffer: array[0..1024] of char;
  bLoadLib: Boolean;
begin
  // ... (rest of the code remains the same)
end;

end.

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

В статье описывается создание диалога выбора компьютера в Windows, используя функцию ServerBrowseDialogA0 из библиотеки NTLANMAN.DLL и реализация этого диалога на языке Pascal.


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

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




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


:: Главная :: Сеть ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 08:59:40/0.0061001777648926/0