📄 tips07.asp
字号:
<!-- #include virtual="/kjasp/func/DB.fun" -->
<% mdbFile = "../UsersPwd.mdb" %>
<!-- #include file="../Login.asp" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>如何取得特殊文件夹的所在目录?</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="Author" CONTENT="KJ Wang">
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (Win95; I) [Netscape]">
</HEAD>
<BODY BACKGROUND="backqa.jpg">
<H2 ALIGN=CENTER>
<HR>如何取得特殊文件夹的所在目录?
<HR WIDTH="100%"></H2>
<UL>
<P>我们可以利用 GetWindowsDirectory API 函数取得 Windows 的所在目录,延续这个问题,如果我们想取得「桌面」、「开始菜单」、「程序」、「启动」…等特殊文件夹的所在目录呢?
假设 Windows 的所在目录是 C:\Windows, 那么可能有人认为以下目录就是上述特殊文件夹的所在目录:</P>
<UL>
<TABLE BORDER=1 CELLSPACING=0 >
<TR>
<TD VALIGN=TOP BGCOLOR="#FFFF00"><FONT FACE="宋体">所在目录</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" BGCOLOR="#ffff00"><FONT FACE="宋体">特殊文件夹</FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#FFFFFF">C:\Windows\Desktop</TD>
<TD WIDTH="26%" VALIGN="TOP" BGCOLOR="#ffffff"><FONT FACE="宋体">桌面</FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#FFFFFF">C:\Windows\Start Menu</TD>
<TD WIDTH="26%" VALIGN="TOP" BGCOLOR="#ffffff"><FONT FACE="宋体">开始功能表</FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#FFFFFF">C:\Windows\Start Menu\Programs</TD>
<TD WIDTH="26%" VALIGN="TOP" BGCOLOR="#ffffff"><FONT FACE="宋体">程式集</FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#FFFFFF">C:\Windows\Start Menu\Programs\<FONT FACE="宋体">启动</FONT></TD>
<TD VALIGN=TOP BGCOLOR="#FFFFFF"><FONT FACE="宋体">启动</FONT></TD>
</TR>
</TABLE>
</UL>
<P>但实际上这个想法在以下几种情况却可能是错误的: </P>
<UL>
<P>Windows版本不同时: 举例来说, 英文版Windows「启动」文件夹的默认目录是C:\Windows\Start
Menu\Programs\Startup, Windows NT 4.0 中文版「桌面」文件夹的默认目录是C:\Windows\桌面。</P>
<P>使用者改变了上述特殊文件夹的所在目录:实际上Windows允许使用者依据自己的喜好改变上述特殊文件夹的所在目录。</P>
</UL>
<P>要正确地取得特殊文件夹的所在目录,可定义 SHGetSpecialFolderLocation
及 SHGetPathFromIDList API 函数,细节如下:</P>
<P>1. API 的定义:</P>
<UL>
<P>Const MAX_PATH = 260</P>
<P>Const CSIDL_DESKTOP = &H0& '桌面 <BR>
Const CSIDL_PROGRAMS = &H2& '程序 <BR>
Const CSIDL_STARTUP = &H7& '启动 <BR>
Const CSIDL_STARTMENU = &HB& '开始菜单 <BR>
Const CSIDL_DESKTOPDIRECTORY = &H10& '桌面 <BR>
Const CSIDL_PERSONAL = &H5& 'My Documents <BR>
Const CSIDL_FAVORITES = &H6& '我的最爱 <BR>
Const CSIDL_RECENT = &H8& '文件(最近开启) <BR>
Const CSIDL_SENDTO = &H9& '传送至 <BR>
Const CSIDL_NETHOOD = &H13& 'NetHood <BR>
Const CSIDL_FONTS = &H14& '字型 <BR>
Const CSIDL_TEMPLATES = &H15& 'ShellNew</P>
<P>Declare Function SHGetSpecialFolderLocation Lib "Shell32"
(ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA"
(ByVal pidl As Long, ByVal szPath As String) As Long <BR>
<BR>
<FONT COLOR="#008000">注:如果以上的定义放在「一般模组」底下, 应在 Const
之前加上 Public 保留字, 并且将 Private 保留字去掉。</FONT></P>
</UL>
<P>2. 定义例:</P>
<UL>
<PRE><FONT SIZE=+1>Const MAX_PATH = 260
Dim pidl As Long, S As String
Id = CSIDL_DESKTOP ' 「桌面」文件夹
S = String(MAX_PATH, 0)
SHGetSpecialFolderLocation 0, Id, pidl
SHGetPathFromIDList pidl, S
S = Left(S, InStr(S, Chr(0)) - 1)
' S 等於「桌面」的所在目录</FONT>
</PRE>
</UL>
</UL>
<DIV ALIGN=right><P>
<HR WIDTH="100%"><A HREF="http://www.kj.com.tw" Target="_top">学 VB(Visual
Basic) 找王国荣</A></P></DIV>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -