unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Mask;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    Panel1: TPanel;
    Button3: TButton;
    Button4: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var zasobySieciowe: TNetResource;
begin
with zasobySieciowe do
  begin
  dwType:=RESOURCETYPE_ANY;
  lpLocalName:=PChar(Edit2.Text); //symbol dysku
  lpRemoteName:=PChar(Edit1.Text); //nazwa zdalnego zasobu
  lpProvider:=nil;
  end;

if WNetAddConnection2(zasobySieciowe,PChar(Edit4.Text),PChar(Edit3.Text),CONNECT_UPDATE_PROFILE)=NO_ERROR
  then ShowMessage('Udane mapowanie dysku sieciowego '+Edit1.Text+' do '+Edit2.Text)
  else ShowMessage('Mapowanie dysku sieciowego nie powiodło się');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
WNetConnectionDialog(Application.Handle,RESOURCETYPE_DISK);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
WNetDisconnectDialog(Application.Handle,RESOURCETYPE_DISK);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if WNetCancelConnection2(PChar(Edit2.Text),CONNECT_UPDATE_PROFILE,True)=NO_ERROR
  then ShowMessage('Odłączenie dysku sieciowego '+Edit2.Text+' powiodło się')
  else ShowMessage('Odłączenie dysku sieciowego '+Edit2.Text+' nie powiodło się')
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  cstr :array[0..255] of Char;
  dlg :Cardinal;
begin
dlg:=Length(cstr);
GetUserName(cstr,dlg);
Edit3.Text:=cstr;
end;

end.
