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

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

DJI与优酷土豆战略合作:提升UGC价值,先内容再营销 Android性能优化典范(二) 从三大运营商联手 看电视游戏背后的现状 【工具推荐】Vert.x——非阻塞、高并发的编程开发框架 Google搜索在确定结果排名时会将网站的移动设备适用性作为考量因素 W3C首次发布SVG标记、SVG轮廓标准工作草案 第七届中国云计算大会 | 首批主会演讲嘉宾和议题公布(表) 安沃传媒创始人王旭东:开发者从移动广告获利的黄金时代已经来临 【舌尖上的CTO】砂锅馄饨的交付件 微软新Visual Studio Code开发工具支持Mac和Linux 科技新创公司想做大?从CNN记者跳槽Snapchat谈起 Java二十年特别奉献:晒博文、赢大奖! 《近匠》华为创新总监蔡绪鹏:智能手表的三大感知与未解难题 从Samurai-Native框架开发谈React Native Qualcomm公司李申:Vuforia打破AR设备界线 物与物的互通:解析Thread、AllJoyn、OIC、Bonjour的特点 《天龙八部3D》中Unity使用介绍 微软推出ManifoldJS,Web App自动转成各平台本地App 专访庄晓丹:Java程序员眼中的Clojure 全面解析ECMAScript 6模块系统 七牛技术总监陈超:记Spark Summit China 2015 Project Tungsten:让Spark将硬件性能压榨到极限 Android手表在中国这样落地 ART运行时Foreground GC和Background GC切换过程分析 开创未来的关键:是什么造就了硅谷?(上) 微软前员工:开发Apple Watch应用的27个技巧 Apple Watch应用开发:从再造墨迹天气谈起 Java二十年特别策划:有奖征文,评选结果出炉! Zen=禅道:图解AMD技术战略转型 从友盟微社区看Android第三方SDK架构实践 无创客 不青春!2015全国大学生移动应用创新大赛在京启动 那位大虾帮我看一下这断代码(JSP高分请教) 帮帮忙啦,哪位同志用过mscomm控件做点对点拨号通讯的 AspRunner是个不错的辅助编写ASP页面的工具,请问哪里有破解下载的啊?谢谢了! 在vc#中如何删除目录下的所有文件? 急 关于分级菜单 求救,如何在注册表中得到一个硬件设备(如猫)的驱动文件名称? 一个难题,希望高手能解决,急切等待! 关于网络状况测试的问题 新手上路,问一个很初级的问题,呵呵。。。 请问如何实现在同一个窗口中的自动跳转? 为什么不能调用类? 关于SQL语句求助 如何在asp和asp.net里面共享信息 溢出错误,麻烦来看看! 知道汉字的国标(gb?)码值,如何显示汉子,急求救!!!! 在SQL2000怎样建立全文索 Cannot start SQL Server Agent 能用case when 举一个例子吗?如果工资>1000 职务='处长',如果工资<1000 职务='科员' 如何将从xml文件中读取的文本在网页上保持格式的显示? sql语句求助!1 有宁波考高程的吗?有参加班的吗? 水晶报表问题???高手请进!!!!!! 使用openquery建立视图。急!急!急!急!急!急! 小问提 交个朋友 Blob类型的字段为什么不能做为Lookup或Calculated字段 有谁知道Any to Icon 的 注册码 怎么实现不同文件中的变量互访? ICS 的FTP控件问题:怎样建目录,我这样做不出错,但是就是建不出来: 数据库出错 怎样将weblogic7和MS sql 2000连接起来? sql语句求助! 关于文件关联的问题,不是那么简单的哦.!!!!!! 一个MM每天回家后做的事 [贴图] 我需要得到记录集中的一条记录 关于MODEN的问题 如何编写Delphi的DLL为C++Buider调用? 我将数据库连接作为一个bean封装,怎么样在sevlet中引用它? 源文件,修改?? 我该怎么做? IIS为什么不能解析中文? Exchange怪问题,求救求救...... 请问VB写的ActiveX DLL,其中的函数如何声明为导出函数?在线等待!! 寻求组件上传多图片源代码 很菜的问题!各位帮帮忙啊!在线等。。 请推荐一本软件工程的书。 我的计算机一接通电源就开机,在98系统中关机显示屏熄灭后风扇仍然旋转,不知是什么原因? 如何在某个页面实现自动跳转??? 紧急求救,我的机器崩溃了。帮帮我啊。!!!!!!!!!(在线等) 改变DW某些内容颜色问题 drearwear ultradev4 在连接数据库最后'确定'键没有作用???? 已知二次函数y=x^2+2x+a(a>0),当m=x时,y1说明理由,答案是y2>0 美文积累不超过600字的作文必须是张晓风或郭沫若的 周国平 老舍都行 社区观鸟一小时征文(不少于400字)急急急! 肥肠吃多了好吗?会不会有细菌 想问一下肥肠吃多了好么? 90后的人80后的心态有时候感觉自己就是80后的心态,我和我女朋友聊天时也会说我有这80后感觉,还有就是我和女朋友聊天的时候感觉她不太懂事,感觉她每天什么都不想,有时候我说话她都不理 80后男人与90后女人的爱情她 是90后的女人他与她相识在夏天的一个午后也许 有时候某些事 某些人都是注定的他 对她一见钟情 她 不以为然毕竟差别是那样的大她开始对他不理不睬他对 每日观鸟一小时 1000字作文 关于左手定则的问题.帮帮忙!很简单的!一根竖直圆圈导线,电流逆时针流,可以判断圆圈里是【点】场,圆圈外是【叉】场,之后怎么判断这圆圈怎么转啊? 左手定则的使用问题.请问:1,磁感线怎样穿过手心,斜着还是垂直?2,当磁感线强度B与电流I不垂直时,左手定则怎么用?为什么我无论怎样做,都不能使磁感线穿过掌心的同时四指又指向电流方向? 数学几何里除了数量关系,还有什么关系 默克尔批美国应顺便“骂醒”中国人日本东北地区发生7.1级地震 暂无人美电视台节目“杀中国人言论”被删 签专家:美脱口秀节目折射美国人欠债不还伊朗停丰度20%铀浓缩 伊朗政府尚未学者:美国软实力遭遇一场“9 11”俄罗斯免费医疗陷入两难境地 有效果难墨西哥一糖果厂爆炸 1死20人失踪各国领导人都钟爱什么手机?美媒体称俄外交官在美招间谍 费用俄方英媒:中国“由陆向海”战略面临三个挑新闻热线三代学人的学术薪传今天天气武装巡逻车5分钟逼停套牌出租停电计划阵雨击退“烧烤模式”老黄够趴体玩转世界杯北京“10·28”暴力恐怖案提起公诉腾格尔带儿子上《中国足球梦》五位冠军闯进八强多家出版机构向女性荐书
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘