📄 vcc25.htm
字号:
<html>
<head>
<title>c++系列</title>
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
</head>
<p align="center"><script src="../../1.js"></script></a>
<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center>
<table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
<tbody>
<tr>
<td width=200 height="59">
</tr>
</tbody>
</table>
<table border=1 bordercolordark=#ffffff bordercolorlight=#ffffff cellpadding=0
cellspacing=0 width=685 align="center" height="70">
<tbody>
<tr>
<td bgcolor=#F9D23C height=14>
<div align=center class=H1> <b>判断windows的Desktop及其它目录</b></font></div>
</td>
</tr>
<tr valign=top>
<td class=H1 height=212>
<h4 align="center"> </h4>
<p><font color="#FF0000"><br>
<span class="unnamed1">使用API函数SHGetSpecialFolder。shlobj.h里有SHGetSpecialFolder的原型声明。这个函数可以帮我们找到windows的Desktop目录、启动目录、我的文档目录等。
</span></font></font></p>
<p> <span class="unnamed1">SHGetSpecialFolder需要三个参数。
第一个参数是HWND,它指定了"所有者窗口":在调用这个函数时可能出现的对话框或消息框。第二个参数是一个整数id,决定哪个目录是待查找目录,它的取值可能是:
</span></font>
<ul type="disc">
<li> <span class="unnamed1">CSIDL_BITBUCKET 回收站
</span></font></li>
<li> <span class="unnamed1">CSIDL_CONTROLS 控制面板
</span></font></li>
<li> <span class="unnamed1">CSIDL_DESKTOP Windows
桌面desktop </span></font></li>
<li> <span class="unnamed1">CSIDL_DESKTOPDIRECTORY
desktop的目录 </span></font></li>
<li> <span class="unnamed1">CSIDL_DRIVES 我的电脑 </span></font></li>
<li> <span class="unnamed1">CSIDL_FONTS 字体目录 </span></font></li>
<li> <span class="unnamed1">CSIDL_NETHOOD 网上邻居
</span></font></li>
<li> <span class="unnamed1">CSIDL_NETWORK 网上邻居virtual
folder </span></font></li>
<li> <span class="unnamed1">CSIDL_PERSONAL 我的文档
</span></font></li>
<li> <span class="unnamed1">CSIDL_PRINTERS 打印机
</span></font></li>
<li> <span class="unnamed1">CSIDL_PROGRAMS 程序组
</span></font></li>
<li> <span class="unnamed1">CSIDL_RECENT 大多数最近打开的文档列一
</span></font></li>
<li> <span class="unnamed1">CSIDL_SENDTO “发送到”菜单项
</span></font></li>
<li> <span class="unnamed1">CSIDL_STARTMENU 任务条启动菜单项
</span></font></li>
<li> <span class="unnamed1">CSIDL_STARTUP 启动目录
</span></font></li>
<li> <span class="unnamed1">CSIDL_TEMPLATES 临时文档
</span></font></li>
</ul>
<p> 最后一个参数是pidl地址。SHGetSpecialFolderLocation把地址写到pidl。</span></font></p>
<p> <span class="unnamed1">下面的代码演示了怎样使用SHGetSpecialFolderLocation:</span></font></p>
<pre> <font size="4">//----------------------------------------------------------------------</font>
<b>void __fastcall</b> TForm1::Button1Click(TObject *Sender)
{
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
<b>char</b> szDir[MAX_PATH];
<b>if</b>(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
<b>if</b>(SUCCEEDED(SHGetSpecialFolderLocation(NULL,
CSIDL_DESKTOPDIRECTORY,
&pidl)))
{
// 如果成功返回true
<b>if</b>(SHGetPathFromIDList(pidl, szDir))
{
Label1->Caption = szDir;
}
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
}
//----------------------------------------------------------------------</span></font></pre>
<p> <b>注意:</b> 有些目录是空的。有些特定的目录在这个文件系统上并没有一个相应的目录。</span></font></p>
<p> 转载自C++Builder园地 </span></font>
</td>
</tr>
</tbody>
</table>
</div>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -