说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用Delphi实现网络驱动器的映射和断开

HTML文档下载 WORD文档下载 PDF文档下载
用Delphi实现网络驱动器的映射和断开

大家在运用Delphi编写网络应用程序时可能会遇到这样一个问题:在一个由Windows NT和Novell Netware组成的网络环境中,应用程序需要使用Novell网上的某些数据,如果每次都手工在Windows资源管理器中映射,断开网络驱动器,不仅繁琐而且显得不够专业。本文将介绍在Delphi中使用Windows32 API函数解决这一问题。

一、 基本原理

在Microsoft Windows环境下,应用程序使用Windows网络函数(WNet)来实现网络功能而不用关心网络的供应商及具体实现。因为WNet函数是独立于网络的。

Wnet函数主要有:WnetAddConnection

WnetAddConnection2

WnetAddConnection3

WnetCancelConnection2等。本文主要用WnetAddConnection2,WnetCancelConnection2函数,下面简单介绍一下,关于WNet函数更详细的资料请参考Delphi的连机文档和Microsoft API函数说。

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;

本程序在Delphi3.0

4.0、PWindows95、Novell Netware 3.12下编译运行通过。

Delphi中异常的截获及其个性化处理 Delphi自定义消息应用一例 Delphi5中资源文件的创建和使用 Delphi的Bug-Tthread Suspend方法 Email服务器的简单实现-Delphi资料 Hook的制作-Delphi资料 INI文件的应用-Delphi资料 NT中的关闭计算机,重新登陆的实现-Delphi资料 Windows 系统方面-Delphi资料 Windows外壳扩展编程-Delphi资料 避免二次运行-Delphi资料 编程实现文件关联-Delphi资料 编写定制的文件流实现文件读写加密-Delphi资料 采用多线程进行数据采集-Delphi资料 产生临时文件名-Delphi资料 程序不出现在任务栏-Delphi资料 程序缩小为任务条右下角的小图标-Delphi资料 得到 Windows 用户名和序列号-Delphi资料 得到windows临时路径-Delphi资料 得到Windows用户名和序列号-Delphi资料 得到计算机的名字和ip-Delphi资料 得到内存的 Status-Delphi资料 得到上一个激活的组件-Delphi资料 得到在内存中运行的所有应用程序的handle-Delphi资料 调用控制面板项目大全-Delphi资料 动态改变当前显示模式-Delphi资料 动态改变屏幕分辨率-Delphi资料 动态建立不常用的对象-Delphi资料 对控制面板进行操作-Delphi资料 返回程序执行参数-Delphi资料 防止 Win95 显示严重错误-Delphi资料 the C++ programing language里的两个小问题!!! 找在没行带checkbutton的listbox控件类 我可怜的QQ被盗了~~有什么密码破译软件取回QQ的密码吗 VARIANT结构中,如何通过pvarVal指针来获得串口传来的二进制流?? 天啊,这就是《程序员》? 编译java程序需要哪些工具,菜鸟提问. how to use *.pak?? ★在数据窗口中如何同时实现多行操作,如update或delete多行。 请问oracle8i的下载问题! 请问MSDN.net 中文版光盘出了吗??????????????????????? 关于STRING的问题 在IE中程序运行有错误?请指点! JB8做个BMP,奇怪问题 有谁知道*.dns用什么软件打开吗,急!!! 大家给我推荐一个delphi源码网站 Oracle8.17的安装问题,请大家帮忙,急呀!谢谢! csv文件存储求助 问个关于checkboxlist控件的用法! 客户端通过Session Bean 调用 Local EntityBean的问题. 启动j2ee的问题--j2ee -verbose 那里能够下载破解的install shield 5.0 or 5.5 or 6.0? 我想搞网络游戏开发,请教各位的意见 如何在接受表单的ASP文件中,去知晓是这个表单中的哪个'确认按钮'被按下了?? 我的数据库打不开了!!! 连接MySQL数据库服务器? 有谁可以推荐几个国外的比较热的asp论坛,多谢! 我是一个菜鸟,想学asp,希望前辈给指条路 有人知道工程硕士是怎么回事吗?和普通的有什么不同啊,可以考普通的博士吗?谢谢阿 access数据库为何备份出错? 有了主键,还需要建立索引吗?解决送分。 在Oracle的逻辑数据库结构中有个概念叫"范围"的是什么意思呀? 能将javascript改写成其它语言吗? 为什么动态创建的控件不能保存? HelpProvider控件的问题 如何把几个dbf表中的数据导到一个表中? 软件汉化有几种方法呢? 各位大虾,求助,在线急等! 看看我能放多少分.... 急啊,我刚买的电脑就出问题了~~~~ 大虾有没有《人月神话》的电子版啊? 天那,资源泄漏 怎样用Wingate绑定IP 高手请进!! 求WSAD 5.0 中文开发文档。 如何做rich Client? VB6在windowsXP中,无法用RmDir命令删除文件夹,只能删除文件,怎么回事?如何解决?在windows98中可以删除。 一个EXCEL的问题,请HELP update 没有加 where 字句导致误操作 怎么恢复(十万火急) ? 为什么国内域名比国际的还贵呢? BDE问题 请教三层结构中数据库访问 的问题 西班牙华商遭警察勒索殴打 寻求律师援奥巴马参观学校旁听课程 揶揄国会议员冯小刚:春晚我打算娱乐大众,每天想如冯小刚否认说过由着性子办春晚:我没傻央视马年春晚时长缩减至4小时 明星没安倍称担心中国加强军备 日本应领导亚安倍称担心中国加强军备 日本应领导亚伊朗处死16名反政府组织囚犯 回应边奥巴马参观学校旁听课程 揶揄国会议员义乌26日清晨发生爆炸凶杀案 已有一安倍称担心中国加强军备 日本应领导亚墨糖果厂爆炸现场搜救结束确认两人遇难浙江首次采用新评价体系对1300余所我军少将:中国发展军力绝不针对日本伊朗东南部武装冲突致17名边防人员死国航增加三条国际航线香港影片《狂舞派》纽约放映获好评官员强奸幼女案双方民事和解 受害人获卡梅伦成英国将不改变与美国的情报合作秘鲁最高法院就藤森在家服刑举行听证会卡梅伦称英国将不改变与美国情报合作关食安法大修,拉起半道高压线本报再获中国500最具价值品牌24小时监管私接管道排污行为“章鱼杓”堪比章鱼保罗医院速递雨刚一歇,天儿就热了报名加入小记者 让我们一起成长幼儿园来了美国客人中小学生应该怎样护牙?3.6克乳蛋白 国内高端牛奶有了新定益元百货携手金玉翠福 启动第三届翡翠商家发全力撬动“年中淡季市场”报志愿不要等到最后一刻“一处水源供全球”真正实现邱县雨中传递正能量应从社会治理的高度去认识立家规让“学历通道”为职业教育改革点睛生病时不要“自我药疗”“埃尔咖啡杯”第二届父亲节茶话会举行河南苟姓后人:宁可不上户口也不让孩子“华为手机品牌之旅”载科技魅力走进石
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘