怎么在程序中访问网络上的共享目录 先把\\ccx\lectureke映射为自己的一个盘(映射时输入密码/用户名),再访问 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下面这个单元也许对你有用(我这台电脑上没有Delphi,等回去我再帮你想想)unit sharing;{ Sharing 98 v2.0 freeware}{在Windows95/97/98中有一个svrapi.dll动态库,基本上所有的设定网络资源共享的函数都存在于此,我们只要调用这里的函数就能完成我们希望的功能。但是要注意的是这个动态库仅仅在Windows95/97/98中有效,在NT下为了保证其安全性,是通过更复杂的函数调用完成这些操作的,所以这里的方法不适于NT环境}interfaceuses Sysutils{,ShareErr} {其中包含一些意外错误的代码和其他的小功能};Type Share_Info50 = Packed Record shi50_netname : Array[0..12] of Char; {13} shi50_type : Byte; shi50_flags : Word; shi50_re : PChar; shi50_path : PChar; shi50_rw_password : Array[0..8] of Char; {9} shi50_ro_password : Array[0..8] of Char; End;Const NERR_Success = 0; { Success – 没有发生错误 } NERR_BASE = 2100; {资源类型常量} STYPE_DISKTREE = 0; {共享目录} STYPE_PRINTQ = 1; {共享打印机} {属性标记常量} SHI50F_RDONLY = 1; { 只读共享} SHI50F_FULL = 2; { 开放所有权限的共享} SHI50F_DEPENDSON = (SHI50F_RDONLY or SHI50F_FULL); {根据用户口令访问} {下面两者的关系是OR, 例如: flags := (SHI50F_RDONLY OR SHI50F_SYSTEM)} SHI50F_PERSIST = 256; {系统启动时建立} SHI50F_SYSTEM = 512; {共享不可见} { 参数: ShareResource() 在指定机器上共享指定资源. ServerName= 需要共享资源的机器的名字,如果是 Nil 则表示本机 FilePath = 需要共享的资源的目录. (字母都应大写); NetName = 共享资源的网络名称(别名),最长12个字母 Re = 备注,可以为空 ShareType = 资源类别,参见常量设定. Flags = 共享标记,参见常量设定. RWPass = 读/写权限的口令,可以为空 ROPass = 只读权限的口令,可以为空 例如: ShareResource(Nil, 'C:\TEMP', 'TESTING', 'My Comment', STYPE_DISKTREE, SHI50F_RDONLY, '','MYPASS'); 这里需要将本机的 C:\TEMP共享为'TESTING',备注是 'My Comment'。 访问权限是只读(Read Only), 只读权限口令是 'MYPASS'. 没有全权访问口令 function ShareResource(ServerName : PChar; FilePath : PChar;NetName:PChar; Re : PChar;ShareType:Byte; Flags:Word;RWPass:PChar;ROPass:PChar):Integer;} { DeleteShare() 在指定机器上删除指定的已经共享的资源. 参数: ServerName=需要共享资源的机器的名字,如果是 Nil 则表示本机. NetName =共享资源的网络名称(别名),最长12个字母 例如: DeleteShare(Nil, 'TESTING'); 这个操作将本机上的名为'TESTING'的共享资源取消共享 function DeleteShare(ServerName : PChar; NetName : PChar) : Integer;}{ GetShareInfo() 取得指定机器上指定的共享资源的信息 参数: ServerName =共享资源存在的机器的名字,如果是 Nil 则表示本机; NetName =共享资源的网络名称(别名),最长12个字母; ShareStruct = Share_Info50.共享资源的信息将添入到此结构中去; 例如: var MyShareStruct : Share_Info50; GetShareInfo(Nil, 'TESTING', MyShareStruct); 这个操作将本机上的名为'TESTING'的共享资源的信息填入 MyShareStruct结构中去 function GetShareInfo(ServerName:PChar;NetName:PChar;Var ShareStruct:Share_Info50):Integer;} { SetShareInfo: 设置指定机器上指定的共享资源的信息. 参数: ServerName =共享资源存在的机器的名字,如果是 Nil 则表示本机; NetName =共享资源的网络名称(别名),最长12个字母; ShareStruct =需要设置的共享资源信息; 例如: SetShareInfo(Nil, 'TESTING', MyShareStruct); 此操作将MyShareStruct描述的共享信息写入到共享资源'TESTING'中function SetShareInfo(ServerName:PChar;NetName:PChar;ShareStruct:Share_Info50):Integer; }{以下部分来自 SVRAPI.h 希望了解详细情况的读者请参考win32.hlp}function NetShareAdd(ServerName:PChar;ShareLevel:SmallInt;Buffer:Pointer; Size:Word):Integer; StdCall;function NetShareDel(ServerName:PChar;NetName:PChar;Reserved:Word):Integer; StdCall;function NetShareGetInfo(ServerName:PChar;NetName:PChar;ShareLevel:SmallInt;Buffer:Pointer; Size : Word; Var Used : Word) : Integer; StdCall;function NetShareSetInfo(ServerName: PChar; NetName : PChar; ShareLevel : SmallInt; Buffer : Pointer; Size : Word; Reserved : SmallInt) : Integer; StdCall;//*********************************************************************************************{这些函数是可以自己用的: function ShareResource(ServerName : PChar; FilePath : PChar;NetName : PChar; Re : PChar;ShareType : Byte; Flags : Word;RWPass : PChar; ROPass : PChar ) : Integer; function DeleteShare(ServerName : PChar; NetName : PChar) : Integer; function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareStruct : Share_Info50) : Integer; function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct: Share_Info50) : Integer;} function ShareResource(ServerName : PChar; FilePath : PChar;NetName : PChar; Re : PChar;ShareType : Byte; Flags : Word;RWPass : PChar; ROPass : PChar ) : Integer; function DeleteShare(ServerName : PChar; NetName : PChar) : Integer; function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareStruct : Share_Info50) : Integer; function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct: Share_Info50) : Integer;//***********************************************************************************************implementationfunction ShareResource(ServerName : PChar; FilePath : PChar;NetName : PChar; Re : PChar;ShareType : Byte; Flags : Word;RWPass : PChar; ROPass : PChar ) : Integer;var MyShare : Share_Info50;PMyShare : ^Share_Info50;beginstrLcopy(MyShare.shi50_netname,NetName,13);MyShare.shi50_type := ShareType;MyShare.shi50_flags := Flags;MyShare.shi50_re := Re;MyShare.shi50_path := FilePath;strLcopy(MyShare.shi50_rw_password,RWPass,9);strLcopy(MyShare.shi50_ro_password,ROPass,9);PMyShare := @MyShare;Result := NetShareAdd(ServerName,50,PMyShare,SizeOf(MyShare));end;function DeleteShare(ServerName : PChar; NetName : PChar) : Integer;beginResult := NetShareDel(ServerName,NetName,0);end;function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareStruct : Share_Info50) : Integer;var PMyShare : ^Share_Info50;AmountUsed : Word;Error : Integer;beginPMyShare := AllocMem(255);Error := NetShareGetInfo(ServerName,NetName,50,PMyShare,255,AmountUsed);If Error = 0 ThenBeginShareStruct.shi50_netname := PMyShare.shi50_netname;ShareStruct.shi50_type := PMyShare.shi50_type;ShareStruct.shi50_flags := PMyShare.shi50_flags;ShareStruct.shi50_re := PMyShare.shi50_re;ShareStruct.shi50_path := PMyShare.shi50_path;ShareStruct.shi50_rw_password := PMyShare.shi50_rw_password;ShareStruct.shi50_ro_password := PMyShare.shi50_ro_password;End;FreeMem(PMyShare);Result := Error;end;function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct: Share_Info50) : Integer;var PMyShare : ^Share_Info50;beginPMyShare := @ShareStruct;Result := NetShareSetInfo(ServerName,NetName,50,PMyShare,SizeOf(ShareStruct),0);end;function NetShareAdd; external 'SVRAPI.DLL';function NetShareDel; external 'SVRAPI.DLL';function NetShareGetInfo; external 'SVRAPI.DLL';function NetShareSetInfo; external 'SVRAPI.DLL';end. pdsinfo,你好!我大概下周回公司去试一试,如果可以,我把分加给你!(我想即使不可用,我也会加一些分给你的!) 这样映射网络盘,不用手工输入密码的!procedure TForm1.Button1Click(Sender : TObject);var NetSource : TNetResource;begin with NetSource do begin dwType := RESOURCETYPE_DISK; lpLocalName :=pchar('X:'); // 将远程资源映射到此驱动器 lpRemoteName :=pchar('\\ccx\lectureke'); // 远程网络资源 lpProvider := ''; // 必须赋值,如为空则使用lpRemoteName的值。 end;if WnetAddConnection2(NetSource, 'Password', 'UserName', CONNECT_UPDATE_PROFILE)=NO_ERROR //用户名为Guest,口令为Password,下次登录时重新连接,此时在Windows资源管理器中可看到网络驱动器: then showmessage('成功映射!') else showmessage('映射失败!');end; 关于连接access的问题 Qreport问题:请问如何在detail里实现多表打印?? 连接远程sql server2000服务器所出现的几个问题 求控件 怎么在DLL里面调用另一个DLL里的函数和过程? 打印问题,怎样把ListView当中的内容打印出来! 请看看我adoquery动态连接数据库的代码错在那里 如何让fastreport2.44中的frPrintGrid1打印出来的报表自动居中 TList.Clear真的可以释放指针的资源吗? 如何在dephi中插入一个VC的类 如何将Tquery中的数据写入一个Excel文件中? adoquery.sql.add()超过255.怎么办?
unit sharing;
{ Sharing 98 v2.0 freeware}
{在Windows95/97/98中有一个svrapi.dll动态库,基本上所有的设定网络资源共享
的函数都存在于此,我们只要调用这里的函数就能完成我们希望的功能。
但是要注意的是这个动态库仅仅在Windows95/97/98中有效,在NT下为了保证其安
全性,是通过更复杂的函数调用完成这些操作的,所以这里的方法不适于NT环境}
interfaceuses Sysutils{,ShareErr} {其中包含一些意外错误的代码和其他的小功能};Type
Share_Info50 = Packed Record
shi50_netname : Array[0..12] of Char; {13}
shi50_type : Byte;
shi50_flags : Word;
shi50_re : PChar;
shi50_path : PChar;
shi50_rw_password : Array[0..8] of Char; {9}
shi50_ro_password : Array[0..8] of Char;
End;
Const
NERR_Success = 0; { Success – 没有发生错误 }
NERR_BASE = 2100; {资源类型常量}
STYPE_DISKTREE = 0; {共享目录}
STYPE_PRINTQ = 1; {共享打印机} {属性标记常量}
SHI50F_RDONLY = 1; { 只读共享}
SHI50F_FULL = 2; { 开放所有权限的共享}
SHI50F_DEPENDSON = (SHI50F_RDONLY or SHI50F_FULL); {根据用户口令访问} {下面两者的关系是OR, 例如: flags := (SHI50F_RDONLY OR SHI50F_SYSTEM)}
SHI50F_PERSIST = 256; {系统启动时建立}
SHI50F_SYSTEM = 512; {共享不可见}
{ 参数:
ShareResource() 在指定机器上共享指定资源.
ServerName= 需要共享资源的机器的名字,如果是 Nil 则表示本机
FilePath = 需要共享的资源的目录. (字母都应大写);
NetName = 共享资源的网络名称(别名),最长12个字母
Re = 备注,可以为空
ShareType = 资源类别,参见常量设定.
Flags = 共享标记,参见常量设定.
RWPass = 读/写权限的口令,可以为空
ROPass = 只读权限的口令,可以为空
例如: ShareResource(Nil, 'C:\TEMP', 'TESTING', 'My Comment', STYPE_DISKTREE,
SHI50F_RDONLY, '','MYPASS');
这里需要将本机的 C:\TEMP共享为'TESTING',备注是 'My Comment'。
访问权限是只读(Read Only), 只读权限口令是 'MYPASS'. 没有全权访问口令
function ShareResource(ServerName : PChar; FilePath : PChar;NetName:PChar;
Re : PChar;ShareType:Byte; Flags:Word;RWPass:PChar;ROPass:PChar):Integer;}
{ DeleteShare() 在指定机器上删除指定的已经共享的资源.
参数:
ServerName=需要共享资源的机器的名字,如果是 Nil 则表示本机.
NetName =共享资源的网络名称(别名),最长12个字母
例如: DeleteShare(Nil, 'TESTING'); 这个操作将本机上的名为'TESTING'的共享资源取消共享
function DeleteShare(ServerName : PChar; NetName : PChar) : Integer;}{ GetShareInfo() 取得指定机器上指定的共享资源的信息
参数:
ServerName =共享资源存在的机器的名字,如果是 Nil 则表示本机;
NetName =共享资源的网络名称(别名),最长12个字母;
ShareStruct = Share_Info50.共享资源的信息将添入到此结构中去; 例如:
var MyShareStruct : Share_Info50;
GetShareInfo(Nil, 'TESTING', MyShareStruct);
这个操作将本机上的名为'TESTING'的共享资源的信息填入 MyShareStruct结构中去
function GetShareInfo(ServerName:PChar;NetName:PChar;Var ShareStruct:Share_Info50):Integer;} { SetShareInfo: 设置指定机器上指定的共享资源的信息.
参数:
ServerName =共享资源存在的机器的名字,如果是 Nil 则表示本机;
NetName =共享资源的网络名称(别名),最长12个字母;
ShareStruct =需要设置的共享资源信息;
例如: SetShareInfo(Nil, 'TESTING', MyShareStruct);
此操作将MyShareStruct描述的共享信息写入到共享资源'TESTING'中
function SetShareInfo(ServerName:PChar;NetName:PChar;ShareStruct:Share_Info50):Integer; }{以下部分来自 SVRAPI.h 希望了解详细情况的读者请参考win32.hlp}
function NetShareAdd(ServerName:PChar;ShareLevel:SmallInt;Buffer:Pointer; Size:Word):Integer; StdCall;
function NetShareDel(ServerName:PChar;NetName:PChar;Reserved:Word):Integer; StdCall;
function NetShareGetInfo(ServerName:PChar;NetName:PChar;ShareLevel:SmallInt;Buffer:Pointer; Size : Word; Var Used : Word) : Integer; StdCall;
function NetShareSetInfo(ServerName: PChar; NetName : PChar; ShareLevel : SmallInt; Buffer : Pointer; Size : Word; Reserved : SmallInt) : Integer; StdCall;//*********************************************************************************************
{这些函数是可以自己用的:
function ShareResource(ServerName : PChar; FilePath : PChar;NetName : PChar; Re : PChar;ShareType : Byte; Flags : Word;RWPass : PChar; ROPass : PChar ) : Integer;
function DeleteShare(ServerName : PChar; NetName : PChar) : Integer;
function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareStruct : Share_Info50) : Integer;
function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct: Share_Info50) : Integer;}
function ShareResource(ServerName : PChar; FilePath : PChar;NetName : PChar; Re : PChar;ShareType : Byte; Flags : Word;RWPass : PChar; ROPass : PChar ) : Integer;
function DeleteShare(ServerName : PChar; NetName : PChar) : Integer;
function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareStruct : Share_Info50) : Integer;
function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct: Share_Info50) : Integer;
//***********************************************************************************************
implementationfunction ShareResource(ServerName : PChar; FilePath : PChar;NetName : PChar; Re : PChar;
ShareType : Byte; Flags : Word;RWPass : PChar; ROPass : PChar ) : Integer;
var MyShare : Share_Info50;
PMyShare : ^Share_Info50;
begin
strLcopy(MyShare.shi50_netname,NetName,13);
MyShare.shi50_type := ShareType;
MyShare.shi50_flags := Flags;
MyShare.shi50_re := Re;
MyShare.shi50_path := FilePath;
strLcopy(MyShare.shi50_rw_password,RWPass,9);
strLcopy(MyShare.shi50_ro_password,ROPass,9);
PMyShare := @MyShare;
Result := NetShareAdd(ServerName,50,PMyShare,SizeOf(MyShare));
end;function DeleteShare(ServerName : PChar; NetName : PChar) : Integer;
begin
Result := NetShareDel(ServerName,NetName,0);
end;
function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareStruct : Share_Info50) : Integer;
var PMyShare : ^Share_Info50;
AmountUsed : Word;
Error : Integer;
begin
PMyShare := AllocMem(255);
Error := NetShareGetInfo(ServerName,NetName,50,PMyShare,255,AmountUsed);
If Error = 0 Then
Begin
ShareStruct.shi50_netname := PMyShare.shi50_netname;
ShareStruct.shi50_type := PMyShare.shi50_type;
ShareStruct.shi50_flags := PMyShare.shi50_flags;
ShareStruct.shi50_re := PMyShare.shi50_re;
ShareStruct.shi50_path := PMyShare.shi50_path;
ShareStruct.shi50_rw_password := PMyShare.shi50_rw_password;
ShareStruct.shi50_ro_password := PMyShare.shi50_ro_password;
End;
FreeMem(PMyShare);
Result := Error;
end;function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct: Share_Info50) : Integer;
var PMyShare : ^Share_Info50;
begin
PMyShare := @ShareStruct;
Result := NetShareSetInfo(ServerName,NetName,50,PMyShare,SizeOf(ShareStruct),0);
end;function NetShareAdd; external 'SVRAPI.DLL';
function NetShareDel; external 'SVRAPI.DLL';
function NetShareGetInfo; external 'SVRAPI.DLL';
function NetShareSetInfo; external 'SVRAPI.DLL';end.
也会加一些分给你的!)
procedure TForm1.Button1Click(Sender : TObject);
var NetSource : TNetResource;
begin
with NetSource do
begin
dwType := RESOURCETYPE_DISK;
lpLocalName :=pchar('X:'); // 将远程资源映射到此驱动器
lpRemoteName :=pchar('\\ccx\lectureke'); // 远程网络资源
lpProvider := ''; // 必须赋值,如为空则使用lpRemoteName的值。
end;
if WnetAddConnection2(NetSource, 'Password', 'UserName', CONNECT_UPDATE_PROFILE)=NO_ERROR
//用户名为Guest,口令为Password,下次登录时重新连接,此时在Windows资源管理器中可看到网络驱动器:
then showmessage('成功映射!') else showmessage('映射失败!');
end;