判定windows的Desktop及其它目次
当前位置:以往代写 > C/C++ 教程 >判定windows的Desktop及其它目次
2019-06-13

判定windows的Desktop及其它目次

判定windows的Desktop及其它目次

利用API函数SHGetSpecialFolder。shlobj.h里有SHGetSpecialFolder的原型声明。这个函数可以帮我们找到windows的Desktop目次、启动目次、我的文档目次等。

SHGetSpecialFolder需要三个参数。 第一个参数是HWND,它指定了"所有者窗口":在挪用这个函数时大概呈现的对话框或动静框。第二个参数是一个整数id,抉择哪个目次是待查找目次,它的取值大概是:

CSIDL_BITBUCKET 接纳站

CSIDL_CONTROLS 节制面板

CSIDL_DESKTOP Windows 桌面desktop

CSIDL_DESKTOPDIRECTORY desktop的目次

CSIDL_DRIVES 我的电脑

CSIDL_FONTS 字体目次

CSIDL_NETHOOD 网上邻人

CSIDL_NETWORK 网上邻人virtual folder

CSIDL_PERSONAL 我的文档

CSIDL_PRINTERS 打印机

CSIDL_PROGRAMS 措施组

CSIDL_RECENT 大大都最近打开的文档列一

CSIDL_SENDTO “发送到”菜单项

CSIDL_STARTMENU 任务条启动菜单项

CSIDL_STARTUP 启动目次

CSIDL_TEMPLATES 姑且文档

最后一个参数是pidl地点。SHGetSpecialFolderLocation把地点写到pidl。

下面的代码演示了奈何利用SHGetSpecialFolderLocation:

//----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
char szDir[MAX_PATH];
if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,
CSIDL_DESKTOPDIRECTORY,
&pidl)))
{
// 假如乐成返回true
if(SHGetPathFromIDList(pidl, szDir))
{
Label1->Caption = szDir;
}
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
}
//----------------------------------------------------------------------

留意: 有些目次是空的。有些特定的目次在这个文件系统上并没有一个相应的目次。

    关键字:

在线提交作业