WNetAddConnection2()
例:
function AddConnection(const RemoteName, LocalName, UserName, Password: string): DWORD;
var
NetResource: TNetResource;
begin
FillChar(NetResource, SizeOf(NetResource), 0);
with NetResource do
begin
dwType := RESOURCETYPE_ANY;
lpLocalName := PChar(LocalName);
lpRemoteName := PChar(RemoteName);
lpProvider := NULL;
end;
Result := WNetAddConnection2(NetResource, PChar(Password), PChar(UserName), 0);
end;
断开用
function WNetCancelConnection(lpName: PChar; fForce: BOOL): DWORD; stdcall;
例:
function AddConnection(const RemoteName, LocalName, UserName, Password: string): DWORD;
var
NetResource: TNetResource;
begin
FillChar(NetResource, SizeOf(NetResource), 0);
with NetResource do
begin
dwType := RESOURCETYPE_ANY;
lpLocalName := PChar(LocalName);
lpRemoteName := PChar(RemoteName);
lpProvider := NULL;
end;
Result := WNetAddConnection2(NetResource, PChar(Password), PChar(UserName), 0);
end;
断开用
function WNetCancelConnection(lpName: PChar; fForce: BOOL): DWORD; stdcall;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls,FileCtrl,Shellapi;
//directoryExists,SelectDirectory两函数要用到 FileCtrl单元,WinExec要用到ShellApi单元type
TForm1 = class(TForm)
StaticText1: TStaticText;
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
Panel1: TPanel;
Bevel1: TBevel;
Button2: TButton;
Button3: TButton;
Edit2: TEdit;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
edit4: TEdit;
cb1: TCheckBox;
rg1: TRadioGroup;
edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure edit4Change(Sender: TObject);
procedure cb1Enter(Sender: TObject);
procedure cb1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
Dir: string;
begin
try
Dir := 'C:\book';
if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],0) then
Edit1.text:= Dir;
//选择要共享的目录
except
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
str:string;
begin
if DirectoryExists(Edit1.text) then
begin
if edit2.text='' then
begin
showmessage('请指定共享名!');
//提示指定要删除的共享名
exit;
//退出Button2Click函数
end;
str:='command.com /C net share '+edit2.text+'='+edit1.text;
if cb1.Checked then
str:=str+' /UNLIMITED'
//同时访问人数无限制
else
str:=str+' /USERS:'+edit4.text;
//指定可同时访问人数
str:=str+' /REMARK:'+edit3.text;
case rg1.ItemIndex of
0:str:=str+' /CACHE:Manual';
//手动配置缓存
1:str:=str+' /CACHE:Automatic';
//自动配置缓存
2:str:=str+' /CACHE:No';
//不需要缓存
end; if winexec(pchar(str),sw_hide)>31 then
memo1.lines.add(edit1.text+'共享成功!')
else
memo1.lines.add(edit1.text+'共享失败!');
end;
end;procedure TForm1.Edit1Change(Sender: TObject);
begin
edit2.text:=ExtractfileName(edit1.text);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Lines.Clear;
end;procedure TForm1.edit4Change(Sender: TObject);
begin
try
strtoint(edit4.text);
except
showmessage('请输入整数!');
end;
end;procedure TForm1.cb1Enter(Sender: TObject);
begin
cb1.Checked:=not cb1.Checked;
//点击cb1后选择状态反转
end;procedure TForm1.cb1Click(Sender: TObject);
begin
if cb1.Checked then
edit4.Enabled:=false
//不限制用户数则使edit4失效
else
edit4.Enabled:=true;
end;procedure TForm1.Button3Click(Sender: TObject);
var
str:string;
begin
if DirectoryExists(Edit1.text) then
begin
if edit2.text='' then
begin
showmessage('请指定要取消的共享名!');
exit;
end;
str:='command.com /C net share '+edit2.text+' /delete';
if winexec(pchar(str),sw_hide)>31 then
memo1.lines.add(edit1.text+'共享取消!')
else
memo1.lines.add(edit1.text+'取消共享失败!');
end;
end;
end.