如何告诉MATLAB uigetfile(uigetdir)默认为Windows库?

时间:2018-04-16 14:20:15

标签: windows matlab

我们假设我要选择用户mp3库中的所有Music个文件。我可以通过在路径栏(地址栏?)中键入libraries\Music从Windows资源管理器访问此库。但是在MATLAB中,如果我使用uigetfileuigetdir进行尝试,则找不到它,而是打开默认位置。

[fileName, pathName, ~] = uigetfile('*.mp3', 'Select Song','libraries\Music\');

根据此superuser question,该库是Windows XML功能,实际上不是环境变量。建议是让用户创建环境变量。虽然我的用户可以这样做,但我不想成为工作组的IT支持,因此我想要一种完全从应用程序本身完成此操作的方法。我也不能依赖硬编码路径,因为有些用户的硬盘很小,而且他们的库都指向网络存储。

Microsoft提供this description using IShellLibrary.但我没有找到有关在MATLAB中使用IShellLibrary的任何信息。打开的默认文件窗口在左侧工具栏上有库,因此让用户只选择他们的文档或其他任何东西并不是什么大问题。但它并不那么干净。

MATLAB有没有办法识别用户的Windows库位置?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是从 Windows 注册表中获取文件的值。 MATLAB 中的命令是 winqueryreg。阅读的关键是'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal'

因此,完成此操作的完整命令是:

ext = '*xlsx'; % search for excel for example
title = 'Find Excel in Documents';
locDir = winqueryreg('HKEY_CURRENT_USER',...
    'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\', 'Personal');
[file,path,indx] = uigetfile(fullfile(locDir, ext), title);