获取桌面路径API

本文提供了一段使用C++编程语言通过Windows API(SHGetSpecialFolderLocation)获取用户桌面路径的代码示例。代码包含了必要的头文件引用、函数声明与调用流程,演示了如何通过所有者窗口、指定目录标识符(如CSIDL_DESKTOP)来获取特定目录的位置,并最终将路径转换为字符串显示。
#include "shlobj.h" //包含头文件
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation (HWND hwndOwner, int nFolder,LPITEMIDLIST * ppidl); //函数声明
hwndOwner: 指定了"所有者窗口",在调用这个函数是可能出現的对话框或信息框.
nFolder: 是一个整数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                     临时文档
ppidl: pidl地址. SHGetSpecialFolderLocation把地址写到pidl.

LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
char szDir[200];
if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidl))) {
// 如果成功返回true
SHGetPathFromIDList(pidl, szDir);
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
::MessageBox (NULL,szDir,"Path",MB_OK);

### 使用 Java 获取系统桌面路径 在 Java 中可以通过 `System` 和 `File` 类来获取当前用户的桌面路径。具体实现方式如下: 对于 Windows 系统,可以利用环境变量 `%USERPROFILE%` 来构建桌面路径[^1]。 ```java import java.io.File; public class DesktopPathExample { public static void main(String[] args) { String userHome = System.getProperty("user.home"); File desktopDir = new File(userHome, "Desktop"); if (desktopDir.exists() && desktopDir.isDirectory()) { System.out.println("Desktop Path: " + desktopDir.getAbsolutePath()); } else { System.out.println("Could not find the desktop directory."); } } } ``` 上述代码通过调用 `System.getProperty("user.home")` 方法获得用户主目录位置,并在此基础上拼接 `"Desktop"` 字符串形成完整的桌面文件夹路径。 跨平台解决方案则更加简洁通用,适用于不同操作系统而无需修改逻辑: ```java import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Files; public class CrossPlatformDesktopPath { public static void main(String[] args) throws Exception{ Path pathToDesktop = Paths.get(System.getProperty("user.home"), "Desktop"); if(Files.exists(pathToDesktop)){ System.out.println("The absolute path of the desktop is "+pathToDesktop.toAbsolutePath().toString()); }else{ System.err.println("Failed to locate the desktop folder."); } } } ``` 这段程序使用了 NIO.2 API (`java.nio.file`) 提供的新特性,在处理文件操作方面具有更好的性能表现以及更丰富的功能支持。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值