Delphi 访问网上邻居

----在Windows 环境下,应用程序使用Windows 网络函数(WNet)来实现网络功能
 
而不用关心网络的供应商及具体实现,因为WNet 函数是独立于网络的。
----Wnet
函数主要有:WnetAddConnection , WnetAddConnection2 , WnetAddConnection3 ,
WnetCancelConnection2
等。本文主要用 WnetAddConnection2,WnetCancelConnection2 函数。

----WNetAddConnection2
在Windows.pas 中的函数原型如下:

----function WNetAddConnection2(var lpNetResource: TNetResource;lpPassword, lpUserName:

----PChar; dwFlags: DWORD): DWORD; stdcall;

----
为调用此函数,必须填写lpNetResouce 结构,此结构的定义为:

typedef  struct _NETRESOUCE{
    DWORD dwScope;  
    DWORD dwType;  
    DWORD dwDisplayType;
    DWORD dwUsage;
    LPTSTR lpLocalName;
    LPTSR  lpRemoteName;
    LPTSr  lpProvider;
} NETRESOURCE;

----
这里使用dwType,lpLocalName,lpRemoteName,lpProvider 几个参数。其含义如下:

----dwType :
用于指定网络的资源类型,有以下RESOURCETYPE_ANY( 任何资源),
RESOURCETYPE_DISK(
磁盘资源) , RESOURCETYPE_PRINT(打印机资源)。

----lpLocalName :
指定本地设备。

----lpRemoteName :
指定远程网络名。

----lpProvider :
指定提供网络资源的供应商。如为空,则表示供应商未知。

----WNetAddConnection2
函数的lpPassword 为远程资源的口令。

----lpUserName
为远程资源的用户名。dwFlags 标志位用于指定登录时是否
重新连接(0 时表示不重新连接,CCONNECT_UPDATE_PROFILE 表示登录时重新连接)。

----WnetCancelConnection2
在Windows .pas 中的函数原型如下:

----function WNetCancelConnection2(lpName: PChar;
  dwFlags: DWORD; fForce: BOOL):DWORD; stdcall;

----lpName :
要断开的远程网络资源或本地重定向驱动器。

----dwFlags :
含义同上。

----fForce : True
表示不管是否有文件打开,强制性断开网络驱动器;
False
表示如有文件打开则函数运行失败。

实例

----
在Delphi 的File 菜单下选择New Application,在Form1 上放置一个Button,
在Button1 的Click 事件中键入如下代码:
procedure TForm1.Button1Click(Sender : TObject);
var
  NetSource : TNetResource;
begin
  with NetSource do
  begin
    dwType := RESOURCETYPE_ANY;
    lpLocalName := ‘X:';
    //
将远程资源映射到此驱动器
    lpRemoteName := ‘//hqServer/sys';
    //
远程网络资源
    lpProvider := ‘';  
    //
必须赋值,
     
如为空则使用lpRemoteName 的值。
  end;
  WnetAddConnection2(NetSource,‘Password',‘Guest',
   //
用户名为Guest,口令为Password
  CONNECT_UPDATE_PROFILE);
   //
下次登录时重新连接
  //
此时在Windows 资源管理器中
   
可看到网络驱动器X:
  if MessageDlg(‘Are you sure to disconnect Drive ?',
 
  mtConfirmation, [mbYes, mbNo], 0) = mrYes
  then      
    //
不管是否有文件打开,
     
断开网络驱动器X:
 WNetCancelConnection2( ‘X:', CONNECT_UPDATE_
PROFILE, True);  
end;
end;
============================================================================================

 
 
 
 
localname:本地磁盘号 如:Y: Z:
remotename: 共享路径 如 ://server/share
username : 用户名
password: 密码
function connectserver(localname: string; remotename: string; username: string; password: string): boolean;
var
 NetSource: TNetResource; Errinfo: longint;
begin
 with NetSource do begin
    dwType := RESOURCETYPE_ANY; //RESOURCETYPE_DISK
    lpLocalName := pchar(localname);
         // 将远程资源映射到此驱动器
    lpRemoteName := pchar(remotename);
        // 远程网络资 源
    lpProvider := '';
        // 必须赋值,如为空则使用lpRemoteName 的值。
 end;
 ErrInfo := WnetAddConnection2(NetSource, pchar(password), pchar(username), 0);
 result := (ErrInfo = NO_ERROR);
end;
posted @ 2013-05-12 17:01  Values  阅读(359)  评论(0)    收藏  举报