Matlab:仅在尚未打开的情况下打开OS资源管理器窗口

时间:2014-05-27 09:00:06

标签: matlab explorer

我正在使用以下行在matlab中打开Windows资源管理器中的文件夹:

system('explorer.exe /select,./my_folder/my_file.tif');

即使Matlab“当前文件夹”与“./”的相对路径也很好。请注意,它还会选择指定的文件,这就是我想要的。

但是,我想仅在相同的路径尚未打开时才打开此窗口。现在,我得到了同一个窗口的几个副本,这很烦人。你知道怎么办?

谢谢,

Ghislain的

(Windows 8,Matlab R2011b 64bits)

1 个答案:

答案 0 :(得分:1)

<强>声明

这是部分答案。我不知道怎么从这里开始,但也许它有帮助。您的问题对我来说非常有趣,如果接口之间的更改(Matlab / Explorer)更容易,它会使数据分析变得更容易!

一些历史记录

DDE是一项古老的技术(16位Windows,是的!),它使Windows应用程序能够相互通信。 DDE已经从Windows XP中删除了,但它只是拒绝死亡。

DDE长寿的一个原因是Windows资源管理器仍然使用DDE。例如,当您双击某个文件时,Explorer会向Excel发送一个DDE命令,告诉它在当前的Excel窗口中打开该文件。

DDE如何为您提供帮助

Matlab的DDE支持已被正式弃用。也许它会完全消失,如果不是因为资源管理器通过DDE消息与Matlab交谈的事实!

您可以通过向应用程序“文件夹”发起有关“appproperties”主题的DDE频道来反转此过程:

channel = ddeinit('folders', 'appproperties')

“文件夹”应用程序似乎是“progman”的同义词,这是一款优秀的Windows 3程序管理器。您可以通过执行

告诉Explorer(“文件夹”)查看文件夹
ddeexec(channel, '[ViewFolder("%l", c:\windows, 5)]')

如果资源管理器已指向该文件夹,则不会打开新窗口。不幸的是,我无法告诉你更多关于这个命令的信息。我不知道%l在那里做了什么,或者5那个问题。我唯一知道的是ViewFolder可以被ExploreFolder取代,在这种情况下你总是打开一个新窗口,该窗口总是在左窗格中显示文件夹树结构。

更多信息

最重要的DDE相关功能是ddeinit,ddeexec和ddeterm。他们的文档被隐藏在这些函数的.m文件中。您只需执行

即可查看.m文件
edit ddeinit

Yair Altman在Matlab的DDE功能上some more info。资源管理器有什么DDE命令可以避开我。我从我发现的here中收集了我的例子。