Delphiによるネットワークドライブのマッピングと切断
4773 ワード
p>Delphiを使用してネットワークアプリケーションを作成する場合、Windows NTとNovell Netwareからなるネットワーク環境では、Novellネットワークのデータを使用する必要があります.毎回手動でWindowsエクスプローラにマッピングし、ネットワークドライブを切断すると、煩雑で専門的ではありません.ここではDelphiでWindows 32 API関数を使用してこの問題を解決する方法について説明します.
一、基本原理
Microsoft Windows環境では、アプリケーションはWindowsネットワーク関数(WNet)を使用して、ネットワークのベンダーや具体的な実装に関心を持たずにネットワーク機能を実現します.WNet関数はネットワークとは独立しているからです.
Wnet関数には、主にWnetAddConnection、WnetAddConnection 2、WnetAddConnection 3、WnetCancelConnection 2などがあります.本文は主にWnetAddConnection 2,WnetCancelConnection 2関数を用いているが,以下簡単に紹介するが,WNet関数の詳細についてはDelphiの接続ドキュメントとMicrosoft API関数を参照して説明する.
WNetAddConnection 2は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」を選択し、Form 1にButtonを配置し、Button 1の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;
このプログラムはDelphi 3.0,4.0、PWIndows 95、Novell Netware 3.12でコンパイルが実行されます.
例2、
現在、delphiの応用はますます広範になり、ネットワークは将来のコンピュータの発展傾向である.本文はdelphiの中でどのようにネットワークドライブのマッピングを実現する小さい技巧を紹介して、ソースプログラムは以下の通りです:map-network-drive.pas procedure tform1.button1click(sender:tobject); varnr:tnetresource; beginwith nr do begindwtype:=resourcetype__any;lplocalname:=`x:';//map to this driver letterlpremotename:=`//myserver\mydirectory';//must be filled in.lpprovider:="; end; wnetaddconnection2(nr,`mypassword',`myuername', connect__update__profile); end;