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

用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下编译运行通过。

移动周报:“今日头条”CEO,爱冒险的技术宅 从China Daily的iPad版,看中国纸媒如何摆脱“旧情结” 天睿推出大数据探索平台:“开箱即用”的数据分析 Basho开源Riak CS,与AWS S3兼容的云存储架构 MongoDB Days北京杂记 VMware携手亿阳信通 铺垫混合服务 行业应用,移动优先:移动难七大痛点剖析 HTML5开发必备:游戏开发资源合集 老而弥坚:65岁传奇Android工程师谈开发 2013中国云计算有奖大调查,每周大奖等你拿! Google Reader之死另一个不为人知的原因 小团队谈推广:豆果、金山、微博易、面包旅行 敏捷实战:如何让团队迭代交付周期缩短一半 移动设备管理初创公司AirWatch:首轮融资2亿美元 New Relic:不等应用崩溃,实时监控你的App! Zynga力挽狂澜三步棋:移动+授权+自有网络 巧用MapReduce+HDFS,海量数据去重的五大策略 革自己的命?为带来一致体验 IE11伪装FireFox 最古老的Linux发行版Slackware以及Arch Linux齐弃MySQL JEECG v2.3 发布,基于代码生成器的智能开发框架 Mozilla将设应用工场 Firefox OS瞄准欧洲南美 Summly创始人:12岁开始编程 17岁公司卖了3000万美元 因SaaS与NoSQL,Oracle雄风不在? 那些年云计算领域的大牛们 回顾:那些被平台方封杀的第三方应用 [热帖推荐] 中国的程序员,真的“短命”吗? 聚焦HTML5移动开发 第六届英特尔杯大学生软件开发大赛开幕 虚拟化技术新星Pluribus Networks获中国VC青睐 可穿戴开发!Pebble Watchface SDK 4月发布 我想做个程序员:一位编程小白的App开发故事 Go 1.1发布,支持向后兼容 怎样用代码遍历DBGrid中的记录?急!在线等待! 为什么mov eax, [0x400000h]和mov eax 400000h汇编结果一样? 网络报表最好的解决方法是什么 高分求购web 打印控件?还有一个远程数据库,客户端打印问题帮忙解决一下 哪位高手能给一个简单的TOOLBAR控件应用的原代码?(非常需要) 哪些有钱途?哪些有前途? 讨论:MSE(软件工程)对中国目前的开发现状真的有帮助吗?来者有分 ACCESS查询语句中的DATEPART函数为什么不能执行??? php为什么安上后不能用 在VS.Net中如何使注释生成已编译的HTML帮助文件? 我想更改Win2000的开机画面,请高手指点 ADO连接数据库时的事务处理问提 对于动态生成的控件,如何确定它的名字? vb 中使用select 的问题 想把post的变量遍历,怎样实现 小问题 关于参数 如何通过一个计算机名来查出它在局域网中的IP !!!!!~~~ 急,哪里可以下载IeWebControl? 有没有方法通过分布式连接直接从sql server写数据到oracle数据库。 郁闷问题:有谁知道Textbox在运行时如果没有任何输入,它是否空值? 如何用vb做一个启动程序(在windows启动运行) 请问,怎样将一个已分好区的电子盘格式化成ext2格式??? 请教web services问题 高分求购H261解码算法 子类中怎么用基类中的一个属性? 请问有没有JB7的中文教程,高分相求!(400分) 怎样在下拉列表框中显示数据表?具体怎么做? 请教,各位是如何实现对SQL SERVER的记录加密的? Datagrid中的HyperLinkColumn如何传递两个变量值给下一页? 高手请进:怎样将一个值传递到datagrid模板列的一个textbox中?问了好久,没有人会吗? ACCESS中的DATEPART函数为什么不能执行? 怎样在下拉列表框中显示数据表?具体怎么做? davidnim(天道酬勤) ,谢谢你了! EA 哥们们想你! 过年了你还好不? 听说你去了米国。。。。。。 我的winsock通信程序 一到晚上11点的样子就出现异常错误 异常处理问题 基础问题5!先答先给分! js里alert()的问题 win2k server+php4.2文件上传错误 如何解决画面抖动问题 请教:在sql server 2000中怎么执行sql语句? 深圳有那些公司用.net 自己重新编译了内核想安装到另外一台没有linux的机器 ORACLE中如何用SELECT语句将查询结果保存成文本格式文件。急急急!!答对一定给分!!! *.ASE文件格式是什么?在3D Explorer中可以把.3ds转换为这种格式吗? sqlserver2000 能否跨于访问 help me!!!!!!!!!!!!!!!!!! 在查询分析器中删除的数据可以恢复吗??急!!!!sql server 2000 角色问题 有重庆的朋友吗?进来介绍个好点的考点,南华中天怎么样? 那些年我们一起追过的张国荣 细数张国柳岩挤走张杨果而 女主播要身材还是智那英暗讽章子怡难培养出冠军 爆王菲助杨丞琳谢娜何炅杨幂吴尊霍建华 罕见明王菲张柏芝周慧敏李湘 那些为爱痴狂的巩俐 孔维 范冰冰 那些国际范儿的中曝《我是歌手》有阴谋 羽泉黄绮珊被有朱丹主持《非常访谈》 称华少是最默契张国荣十大经典电影回顾 与梁朝伟裸拥揭秘众明星原配罕见照片明星素颜后还是明星?嫩模刘雨柔上节目遭沈玉琳对嘴强吻 反杨幂景甜孙俪毕业照曝光 揭秘明星整容五花八门!揭女星诡异美容法34岁汤唯被曝交圈外男友 疑似机场胡张东健金希澈韩星也爱张国荣 纪念哥哥小S陈冠希李小璐林心如 盘点明星超囧周迅范冰冰林志玲舒淇 女星陪酒价目表千点烛光悼念张国荣 唐唐鞠躬谢哥迷蔡少芬晒两女互动照 昔日与男星亲密照明星珍贵合影大合集:有人永远不可能再从欧洲打到中国!308S死磕高尔夫7五大港台明星炒房破产后的悲惨生活,房从模仿到创造,化用是正路那些让你感到幸福的瞬间,看完整个人都暖暖环游世界神之入场卷怎么获得攻略东芝虚报1700亿利润背后:家电转型企鹅智酷|2015新金矿:中国二三线火拼小米,乐视推出99元智能路由器看看人家姑娘有了 iPhone6 拍暖暖环游世界暖暖的心套装怎么获得攻略没有人可以带走你的痛,所以也别让任何约翰·范德沃特:一个荷兰建筑师的理想一位家长给我们上的,最具有意义的教育梦幻西游手游星官BOSS 星官BOS一生中最棒的老师!!巨人冰归来 玩家谈另类巨人冰法冲天每逢佳节长三斤,三斤全在肚子上新娘捧花DIY,花类、配饰、颜色搭配2015新加坡政府要花掉67亿新币!OS X10.11第五个测试版发布 中国互联网公司幕后老板是谁?吓你一跳
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘