用Delphi实现虚拟盘映射

本实例演示如何映射和断开网络虚拟盘。
  
  向窗体上添加两个TLabel组件、两个TEdit组件和两个TButton组件,设计完成的主界面如图1所示。
  
 

  
图1 主界面

  
  首先添加“连接”按钮的响应代码,在其中调用WNetAddConnection2函数,根据用户输入的本地虚拟盘和网络共享目录来映射虚拟盘,响应代码如下:
  
  procedure TfrmMain.btnConnectClick(Sender: TObject);
  var
  NetShare :NETRESOURCE;
  begin
  NetShare.dwType := RESOURCETYPE_DISK;
  NetShare.lpLocalName := PAnsiChar(edtLocal.Text);
  NetShare.lpRemoteName := PAnsiChar(edtRemote.Text);
  NetShare.lpProvider :=’’;
  WNetAddConnection2(NetShare, ’’, ’’, CONNECT_UPDATE_PROFILE);
  end;
  
  然后添加“断开”按钮的响应代码,在其中调用WNetCancelConnection2函数断开用户输入的本地虚拟盘,响应代码如下:
  
  procedure TfrmMain.btnDisconnectClick(Sender: TObject);
  var
  strLocalName : PChar;
  begin
  strLocalName:=PAnsiChar(edtLocal.Text);
  WNetCancelConnection2(strLocalName,CONNECT_UPDATE_PROFILE,False);
  end;
  
  程序代码如下:
  
  unit Unit1;
  
  interface
  
  uses
  
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
  Dialogs, StdCtrls;
  
  type
  
  TfrmMain = class(TForm)
  btnConnect: TButton;
  btnDisconnect: TButton;
  edtLocal: TEdit;
  Label1: TLabel;
  Label2: TLabel;
  edtRemote: TEdit;
  procedure btnConnectClick(Sender: TObject);
  procedure btnDisconnectClick(Sender: TObject);
  
  private
  { Private declarations }
  public
  { Public declarations }
  end;
  
  var
  frmMain: TfrmMain;
  implementation
  {$R *.dfm}
  procedure TfrmMain.btnConnectClick(Sender: TObject);
  
  var
  NetShare :NETRESOURCE;
  begin
  NetShare.dwType := RESOURCETYPE_DISK;
  NetShare.lpLocalName := PAnsiChar(edtLocal.Text);
  NetShare.lpRemoteName := PAnsiChar(edtRemote.Text);
  NetShare.lpProvider :=’’;
  WNetAddConnection2(NetShare, ’’, ’’, CONNECT_UPDATE_PROFILE);
  end;
  
  procedure TfrmMain.btnDisconnectClick(Sender: TObject);
  
  var
  strLocalName : PChar;
  begin
  strLocalName:=PAnsiChar(edtLocal.Text);
  WNetCancelConnection2(strLocalName,CONNECT_UPDATE_PROFILE,False);
  end;
  
  end.
  
  保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。
  
  在“本地虚拟盘”对应的文本框中输入一个有效的本地虚拟盘,在“网络共享目录”对应的文本框中输入一个有效的网络共享目录,如图3所示。
  
 

  
图2 程序运行的初始画面

  

  
图3 输入参数

  
  单击“连接”按钮可以映射虚拟盘,单击“断开”按钮可以断开虚拟盘。

转载于:https://www.cnblogs.com/wenwencao/archive/2008/12/29/1364412.html

Delphi编写的虚拟硬盘文件浏览程序,这段代码只实现了很小的功能,对分区格式有限制,只能读取不能写入,只能读取C盘根目录下的文件.等等.代码里符带一份学习笔记,是Fat分区格式的,不是太详细,到数据恢复网可以找到详细的资料.   使用Virtual PC的时候,刚开始时对于VPC和宿主之间的文件传输却一直没有整明白,所以要从宿主计算机中传输文件到VPC中只能靠WinIso制作成iso文件再用VPC的光驱来读取,这样做很麻烦,而且只是一面传输,所以就看一下VPC的虚拟硬盘,一看之下和记忆中的硬盘格式差不多,我只记得有个"55 AA",不巧的是在这里也找到了这个数据.所以就想做一个读取虚拟磁盘的软件.    于是去网上找了一些看了下:    首先是硬盘的主引导扇区,固定值:0磁面0磁道1扇区.大小512字节,记得前几天看过<>--一本不错的书,它那上面的第一个程序便是写了一个引导程序.它便是写了程序所需要的功能后将其它地方填0以达到512字节.当然最后两个字节一定是"55 AA",只有这个值才是有效的.    但是,上面所提那个引导程序显然是不合理的(书中只是一个软件盘引导可以不涉及到分区信息).因为真正的引导程序只能是占用此扇区的前446个字节,而后面直到最后"55 AA"之前的64个字节,是用来记录分区信息的DPT(Disk PartitionTable).但是作为在虚拟机上或软盘上的演示似乎也无妨(硬盘肯定不行,会破坏整个系统分区).    由于只是为了VPC与宿主计算机交换数据,所以我决定只读取第一分区就可以了.首先准备一个新VPC虚拟硬盘,用VPC建一个最小的3M硬盘(这一点是Virtual PC比VMWare强的),分区(全做为C盘),格式化,由于硬盘很小,所以只能格式化成Fat12,这里只学习了Fat12和Fat16的分区格式,然后用UltraEdit打开:    果然,510字节后便是"55 AA"即行标"0x01f0h"最后两字节,再看一下前面行标"0x1B0h"最后两字节是"80 01"80便是表示此分区为活动分区,即从此开始为第一个分区的信息.前面正好446字节.    每一个分区由十六个字节来描述.第一字节只能为"80"或"00",我们先不关心这些字节,只关心最后四个字节--分区所占扇区数.和最后第八字节开始的四个字节--相对扇区数,即此分区之前还有多少扇区.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值