python 映射网络驱动器_用Delphi实现网络驱动器的映射和断开
p>大家在运用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中如何实现网络驱动器映射的小技巧,源程序如下:
map-network-drive.pas
procedure tform1.button1click(sender:tobject);
var
nr:tnetresource;
begin
with nr do
begin
dwtype:=resourcetype__any;
lplocalname:=`x:'; //map to this driver letter
lpremotename:=`//myserver\mydirectory';
//must be filled in.
lpprovider:=";
end;wnetaddconnection2(nr,`mypassword',`myuername',
connect__update__profile);
end;
python 映射网络驱动器_用Delphi实现网络驱动器的映射和断开相关推荐
- python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)-简述与端口转发...
VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...
- 树莓派有线网络设置_树莓派的基本网络配置
树莓派(Raspberry Pi)是如图所示的小电路板,别看它只有卡片大小,但它却能够运行Linux系统,树莓派拥有USB接口,可以连接鼠标键盘,还有HDMI口,可以连接显示器,除此之外,树莓派还提供 ...
- 怎样查看计算机网,如何查看电脑(本机)无线网络密钥_查看电脑无线网络密钥的步骤...
当我们在电脑中那幢无线路由器和无线网卡之后,都会设置无线网络密码,防止蹭网的,但是有时候可能自己设置之后忘记密码了,别人来家里要连接wifi的时候也就无法连接了,那么如何查看电脑(本机)无线网络密钥呢 ...
- 网络类型_多种类型的网络钓鱼攻击和诈骗
点击标题下「蓝色微信名」可快速关注 网络钓鱼攻击每年都会对企业造成重大损失和损害 谷歌和Facebook的损失总计超过1亿美元.比利时克里兰银行向网络犯罪分子交付了超过7500万美元.奥地利航空零部件 ...
- python实现流媒体传输_基于OpenCV的网络实时视频流传输的实现
很多小伙伴都不会在家里或者办公室安装网络摄像头或监视摄像头.但是有时,大家又希望能够随时随地观看视频直播. 大多数人会选择使用IP摄像机(Internet协议摄像机)而不是CCTV(闭路电视),因为它 ...
- python获取网络信息_利用psutil获取网络信息
获取网络总的io信息 [root@bogon python_auto]# vim net.py !/usr/bin/env python import psutil net_information = ...
- java 网络驱动器_删除多余的网络驱动器
*1.查询SQL尽量不要使用select ,而是select具体字段. 反例子: select * from employee; 正例子: select id,name from employee; ...
- python四边形转矩形_如何用PIL将矩形图像映射成四边形?
所以我用一个简单的正向映射来解决这个问题,而不是逆映射,这通常更好,但是在我的应用程序中,我只将矩形映射到比矩形小的四边形,因此通常在变换后的图像中没有孔.代码如下:def reverse_quad_ ...
- python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)-带宽控制...
在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对 ...
- python 爬题库_高校邦《网络数据采集与Python爬虫【带实验】》免费最全题库
后人将鸡窗代指书房,指的是自己书房的窗户.( ) 道德作为一种特殊的社会意识形态,归根到底是由经济基础决定的. 下列叙述中哪项与哌拉西林不符 男性,29岁,交通事故,头部外伤,当即昏迷送来医院,检查格 ...
最新文章
- CFCC百套计划2 CodeChef December Challenge 2017 Chef And Easy Xor Queries
- java try catch_异常处理,JAVA中异常处理的介绍
- 【小白学PyTorch】扩展之Tensorflow2.0 | 20 TF2的eager模式与求导
- 瞧瞧,这样的『函数』才叫 Pythonic
- 开关量光端机产品特点及应用范围介绍
- 从Java到Go面向对象--继承思想.md
- VPC-阿里云专有网络 Virtual Private Cloud
- uitextfield 键盘类型_以编程方式更改UITextField键盘类型
- Jersey 2.x JDK 上的客户端应用
- 【市场人必备】100份500强企业营销传播方案,小白晋升大神。
- Atitit 数据结构与常见文件元数据结构 目录 1. 分类 内部数据结构与外部存储数据结构	1 2. 编程语言内部数据结构 (堆栈 树 图等	1 2.1. 数据结构 (集合,列表,tree,map
- matlab怎么学机器人算法,机器人学、机器视觉与控制——MATLAB算法基础
- 修改element-ui 下拉框样式
- 路由navigate
- 利用OA系统进行档案管理原来这么简单?
- ubuntu18.04 升级内核后,进入系统页面卡在“started gnome display manager“的解决方案
- java 倍数_Java硬币翻转倍数递增试算实例
- 三款免费杀毒软件+clamAV
- iOS开发者账户密码修改流程
- 很不错的免费电影网站中国影视库mdbchina.com