⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tips07.asp

📁 一套经典的asp教程 本人受益颇多 特推荐之 直接解压无密码
💻 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 = &amp;H0&amp; '桌面 <BR>
Const CSIDL_PROGRAMS = &amp;H2&amp; '程序 <BR>
Const CSIDL_STARTUP = &amp;H7&amp; '启动 <BR>
Const CSIDL_STARTMENU = &amp;HB&amp; '开始菜单 <BR>
Const CSIDL_DESKTOPDIRECTORY = &amp;H10&amp; '桌面 <BR>
Const CSIDL_PERSONAL = &amp;H5&amp; 'My Documents <BR>
Const CSIDL_FAVORITES = &amp;H6&amp; '我的最爱 <BR>
Const CSIDL_RECENT = &amp;H8&amp; '文件(最近开启) <BR>
Const CSIDL_SENDTO = &amp;H9&amp; '传送至 <BR>
Const CSIDL_NETHOOD = &amp;H13&amp; 'NetHood <BR>
Const CSIDL_FONTS = &amp;H14&amp; '字型 <BR>
Const CSIDL_TEMPLATES = &amp;H15&amp; 'ShellNew</P>

<P>Declare Function SHGetSpecialFolderLocation Lib &quot;Shell32&quot;
(ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Declare Function SHGetPathFromIDList Lib &quot;Shell32&quot; Alias &quot;SHGetPathFromIDListA&quot;
(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 + -