NETCF开发之文件与目录(6)

来源:互联网 发布:淘宝超级会员专享红包 编辑:程序博客网 时间:2024/06/12 00:58

获得系统文件夹信息

.NET Compact Framework应用程序中调用SHGetSpecialFolderPath函数比较麻烦,下面就介绍该函数的使用方法。为了让SHGetSpecialFolderPath函数更加容易使用,可以建立一个模块,在模块中加入常用该函数的声明,然后在开发Pocket PC应用程序时使用。

调用SHGetSpecialFolderPath函数首先要为nFolder参数定义CSIDL值。清单11-1给出了CSIDL值的声明。

 

清单11-1nFolder参数的可选CSIDL

Public Enum ceFolders As Integer

         DESKTOP = 0         ' /My Documents

PROGRAMS = 2        ' /Windows/”开始菜单/程序

PERSONAL = 5        ' /My Documents

FAVORITES = 6       ' /Windows/Favorites

STARTUP = 7         ' /Windows/启动

STARTMENU = &HB     ' /Windows/Start Menu

FONTS = &H14        ' /Windows/Fonts

End Enum

 

 

其次是增加如清单11-2所示的SHGetSpecialFolderPath函数声明。该声明需要增加到模型的声明部分。

 

清单11-2SHGetSpecialFolderPath函数声明

<System.Runtime.InteropServices.DllImport("coredll.dll")> _

Private Function SHGetSpecialFolderPath( _

ByVal hwndOwner As Integer, _

ByVal lpszPath As String, _

ByVal nFolder As ceFolders, _

ByVal fCreate As Boolean) As Boolean

End Function

 

 

封装SHGetSpecialFolderPath函数

.NET Compact Framework应用程序中调用SHGetSpecialFolderPath函数比较麻烦,最好的办法就是对SHGetSpecialFolderPath函数进行封装。这里使用GetSpecialFolderPath函数来进行封装。GetSpecialFolderPath函数直接接收MyCSIDL参数,返回对应的系统文件夹路径。GetSpecialFolderPath函数如清单11-3所示。

 

清单11-3GetSpecialFolderPath封装函数

Public Function GetSpecialFolderPath(ByVal MyCSIDL As ceFolders) As String

Dim strWorkingPath As String = New String(" "c, 260)

Dim intEndOfPath As Integer

 

Try

SHGetSpecialFolderPath(0, strWorkingPath, MyCSIDL, False)

intEndOfPath = strWorkingPath.IndexOf(Chr(0))

If intEndOfPath > -1 Then

strWorkingPath = strWorkingPath.Substring(0, intEndOfPath)

End If

Catch ex As Exception

strWorkingPath = ex.Message

End Try

 

Return strWorkingPath

End Function

 

在清单11-3里,首先为返回系统文件夹的路径开辟260个字符的内存缓冲区。当SHGetSpecialFolderPath函数返回的时候,接收的路径存储在字符串的左端,以空字符(ASCII 0)结尾。

GetSpecialFolderPath函数简化了SHGetSpecialFolderPath函数的调用。以下是接收PersonalProgramsStart MenuStartup系统文件夹的示例。

 

得到Personal系统文件夹

GetPersonalFolder函数如清单11-4所示,直接传递PERSONAL数值给GetSpecialFolderPath函数,返回Personal系统文件夹路径。

 

清单11-4GetPersonalFolder函数

Public Function GetPersonalFolder() As String

' 返回 /My Documents.

Return GetSpecialFolderPath(ceFolders.PERSONAL)

End Function

 

 

得到Programs系统文件夹

GetProgramFolder函数如清单11-5所示,直接传递PROGRAMS数值给GetSpecialFolderPath函数,返回Programs系统文件夹路径。

 

清单11-5GetProgramFolder函数

Public Function GetProgramsFolder() As String

' 返回 /Windows/Start Menu/Programs.

Return GetSpecialFolderPath(ceFolders. PROGRAMS)

End Function

 

 

获得Start Menu 系统文件夹

GetStartMenuFolder函数如清单11-6所示,直接传递STARTMENU数值给GetSpecialFolderPath函数,返回StartMenu系统文件夹路径。

 

清单11-6GetStartMenuFolder函数

Public Function GetStartMenuFolder() As String

'返回 /Windows/Start Menu.

Return GetSpecialFolderPath(ceFolders. STARTMENU)

End Function

 

 

获得Start up特定系统夹

GetStartupFolder函数如清单11-7所示,直接传递STARTUP数值给GetSpecialFolderPath函数,返回Startup系统文件夹路径。

 

清单11-7GetStartupFolder函数

Public Function GetStartupFolder() As String

'返回 /Windows/Startup.

Return GetSpecialFolderPath(ceFolders. STARTUP)

End Function

 

 
原创粉丝点击