利用VB.NET与SHGetFileInfo制作远程资源浏览器

来源 :中小企业管理与科技·下旬 | 被引量 : 0次 | 上传用户:zhouwei9471
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:无论是编程爱好者,还是单位的信息管理人员,都希望以人们熟知的windows资源浏览器形式调取远程,为此,本文主要介绍如何利用VB.NET和SHGetFileInfo函数实现其功能。
  关键词:VB.NET SHGetFileInfo 远程资源浏览器
  
  1 开发及调试的基本环境
  安装windows server 2003服务器一台,工作站若干,其中一台工作安装VS2005,主要用于编写和调试程序。
  2 程序涉及对象及基本设置
  首先,在VS2005环境下建立一个解决方案文件(mybrow.sln),然后创建一个窗体文件myfrm.vb,然后在窗体上按下面界面放置控件。
  其主要控件设置及其功能说明如下表:
  3实现各项功能的程序模块
  3.1 引用命名空间
  Imports System.IO:Imports System.Text:Imports Microsoft
  Imports System.Net:Imports System.runtime.interopservices
  3.2 定义登录FTP服务器,所需窗体级对象及变量
  Private urib As UriBuilder:Private dlyz As NetworkCredential
  Private myre As FtpWebRequest:Private pn As String
  Private hn As String:Private ph As String:Private un As String
  Private pd As String:Private upstr As Stream
  3.3 定义连接远程FTP服务器函数
  Private Sub loginserver()
   Try
  urib=New UriBuilder("ftp",hn,Integer.Parse(pnumber),ph)
  myre=CType(FtpWebRequest.Create(urib.Uri),FtpWebRequest)
  dlyz=NewNetworkCredential(un,pd):myre.Credentials=dlyz
  myre.KeepAlive=False:myre.Method="list"
   Catch ex As WebException
  MsgBox(ex.Message)
   End Try
  End Sub
  3.4 定义获得Ftp根目录下文件资源函数
  Private Sub getroot()
  Try
  Dim myre As FtpWebResponse=CType(myre.GetResponse, FtpWebResponse)
  Dim mystream As Stream=myre.GetResponseStream()
  Dim mystrea As StreamReader=New StreamReader(mystream, Encoding.Default)
  Dim str As String=mystrea.ReadToEnd()
  Dim dirfilestr() As String = Split(str, vbCrLf)
  Dim dirfiletmp As String = ""
  For Each str1 As String In dirfilestr
  If VisualBasic.Left(str1, 1) = "d" Then
  dirfiletmp += str1 & vbCrLf
  End If
  Next
  For Each str1 As String In dirfilestr
  If VisualBasic.Left(str1, 1) <> "d" Then
  dirfiletmp += str1 & vbCrLf
  End If
  Next
  dirfilestr = dirfiletmp.Split(vbCrLf)
  With List1
  .Items.Clear()
  Dim i As Integer = 0
  For Each str1 As String In dirfilestr
  If str1.Trim.Length = 0 Then Exit For
  Dim FDname as string = str1.Substring(55, str1.Length - 55)
  Dim FDlng as string = str1.Substring(31, 12)
  Dim FDdate as string = str1.Substring(43, 12)
  Dim FDxx as string = str1.Substring(0, 10).Trim
  If FDname.Trim <> "." And FDname.Trim <> ".." Then
  If VisualBasic.Left(FDxx, 1) = "d" Then
  Dim it As ListViewItem:it = .Items.Add(FDname)
  .Items(i).ImageKey = "dir":it.SubItems.Add("文件夹")
  it.SubItems.Add(FDlng):t.SubItems.Add(FDdate)
  Else
  geticon(FDname, FDlng, FDdate)
  End If
  i = i + 1
  End If
  Next
  End With
  Catch ex As WebException
  MsgBox(ex.Message)
  End Try
  End Sub
  3.5 定义获取资源类型图标函数
  Private Sub geticon(ByVal fn As String, ByVal flng As String, ByVal fdate As String)
  Dim ext As String = Path.GetExtension(fn)
  Dim ico As Icon:Dim shfi_small As New shfileinfo
  Im1.ImageSize = New System.Drawing.Size(16, 16)
  Try
  Dim Ltem As ListViewItem
  SHGetFileInfo(ext,0,shfi_small, Marshal.SizeOf(shfi_small), SHGFI_SMALLICON Or shgfi_icon Or shgfi_usefileattributes)
  ico = Icon.FromHandle(shfi_small.hicon)
  Dim keyindex As Integer = Im1.Images.IndexOfKey(ext)
  If keyindex<0 Then
  Im1.Images.Add(ico):keyindex=Im1.Images.Count-1
  Im1.Images.SetKeyName(keyindex, ext)
  End If
  Ltem = New ListViewItem(fn):LstItem.ImageIndex=keyindex
  List1.Items.Add(Ltem):LstItem.SubItems.Add("文件")
  Dim filels As Long=flng 1024
  Ltem.SubItems.Add(filels.ToString + "KB")
  Ltem.SubItems.Add(fdate)
  Catch ex As Exception
  MsgBox(ex.ToString())
  End Try
  End Sub
  4 登录远程服务器,并获取文件资源
  在登录按钮的单击事件中,编写如下语句。
  Private Sub B1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B1.Click
  hn = T1.Text:pn = “21”
  un = T2.Text:pd = T3.Text
  ph = "":loginserver():getroot()
  End Sub
  上述,即为实现其功能代码,爱好者稍加修改即可完成基于网络的资源上传和下载功能,同时敬请各位同行批评指正。
其他文献
细根是地下生态过程的核心,细根的形态变化直接影响养分和水分的吸收及利用效率。因此,正确认识细根的生产、周转及其寿命对科学的指导生产实践以提高森林生态系统生产力具有重
现代远程教育这一教育的新形式,正日益成为人们终身学习的首选形式。电大多年来所形成的多种办学形式和个性化的教学模式,为服务于终身学习体系奠定了坚实的基础,提供了有力
在分析了广播电视大学远程开放教育中信息检索课现状的基础上,探讨了提高信息检索课教学效果的对策,并在教学团队组建、移动学习网站开发、教学资源建设、学习支持服务拓展、
根据三北地区农村的产业结构和我国农村地形分布特点等来深入分析如何增加农民收入,指出林业发展是增加农民收入的重要组成部分,同时分析了林业和三北防护林的特点,指出建设社会