熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

用Delphi實現網絡驅動器的映射和斷開

2013-11-11 21:06:50  來源: Delphi編程 

  大家在運用Delphi編寫網絡應用程序時可能會遇到這樣一個問題在一個由Windows NT和Novell Netware組成的網絡環境中應用程序需要使用Novell網上的某些數據如果每次都手工在Windows資源管理器中映射斷開網絡驅動器不僅繁瑣而且顯得不夠專業本文將介紹在Delphi中使用Windows API函數解決這一問題

基本原理

  在Microsoft Windows環境下應用程序使用Windows網絡函數(WNet)來實現網絡功能而不用關心網絡的供應商及具體實現因為WNet函數是獨立於網絡的

  Wnet函數主要有WnetAddConnection WnetAddConnection WnetAddConnection WnetCancelConnection本文主要用WnetAddConnectionWnetCancelConnection函數下面簡單介紹一下關於WNet函數更詳細的資料請參考Delphi的連機文檔和Microsoft API函數說

  WNetAddConnection在Windowspas中的函數原型如下

function WNetAddConnection
(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;
這裡使用dwTypelpLocalNamelpRemoteName
lpProvider幾個參數其含義如下
dwType : 用於指定網絡的資源類型
有以下RESOURCETYPE_ANY(任何資源)
RESOURCETYPE_DISK(磁盤資源)
RESOURCETYPE_PRINT(打印機資源)
lpLocalName : 指定本地設備
lpRemoteName : 指定遠程網絡名
lpProvider : 指定提供網絡資源的供應商
如為空則表示供應商未知
WNetAddConnection函數的
lpPassword為遠程資源的口令
lpUserName為遠程資源的用戶名
dwFlags標志位用於指定登錄時是否重新連接
時表示不重新連接CCONNECT_UPDATE_
PROFILE登錄時重新連接)
WnetCancelConnection在Windowspas
中的函數原型如下
function WNetCancelConnection
(lpName: PChar; dwFlags: DWORD; fForce: BOOL):
DWORD; stdcall;
lpName : 要斷開的遠程網絡資源或本地重定向驅動器
dwFlags : 含義同上
fForce : True表示不管是否有文件打開
強制性斷開網絡驅動器False 表示如有文
件打開則函數運行失敗

實例

  在Delphi的File菜單下選擇New Application在Form上放置一個Button在Button的Click事件中鍵入如下代碼

procedure TFormButtonClick
(Sender : TObject);
var
NetSource : TNetResource;
begin
with NetSource do
begin
dwType := RESOURCETYPE_ANY;
lpLocalName := X:;
// 將遠程資源映射到此驅動器
lpRemoteName := \\hqServer\sys;
// 遠程網絡資源
lpProvider := ; // 必須賦值
如為空則使用lpRemoteName的值
end;
WnetAddConnection(NetSource Password Guest
//用戶名為Guest口令為Password
CONNECT_UPDATE_PROFILE);
//下次登錄時重新連接
//此時在Windows資源管理器中可看到網絡驅動器X
if MessageDlg(Are you sure to disconnect Drive ?
mtConfirmation [mbYes mbNo] ) = mrYes then
//不管是否有文件打開斷開網絡驅動器X
WNetCancelConnection
( X: CONNECT_UPDATE_PROFILE True);
end;
end;

  本程序在DelphiPWindowsNovell Netware 下編譯運行通過


From:http://tw.wingwit.com/Article/program/Delphi/201311/8529.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.