Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:仅当尚未打开时才打开OS explorer窗口_Matlab_Explorer - Fatal编程技术网

Matlab:仅当尚未打开时才打开OS explorer窗口

Matlab:仅当尚未打开时才打开OS explorer窗口,matlab,explorer,Matlab,Explorer,我正在从matlab中打开Windows资源管理器中的一个文件夹,其中包含以下行: system('explorer.exe /select,./my_folder/my_file.tif'); 它工作得很好,即使Matlab“当前文件夹”的相对路径带有“/”。请注意,它还选择了指定的文件,这正是我想要的 但是,我只想在同一路径尚未打开时打开此窗口。现在,我得到了同一个窗口的几个副本,这很烦人。你知道怎么做吗 谢谢 吉斯兰 (Windows 8,Matlab R2011b 64位)免责声明 这

我正在从matlab中打开Windows资源管理器中的一个文件夹,其中包含以下行:

system('explorer.exe /select,./my_folder/my_file.tif');
它工作得很好,即使Matlab“当前文件夹”的相对路径带有“/”。请注意,它还选择了指定的文件,这正是我想要的

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

谢谢

吉斯兰


(Windows 8,Matlab R2011b 64位)

免责声明

这是部分答案。我不知道如何从这里继续下去,但不管怎样,这可能会有所帮助。我对你的问题很感兴趣,如果在接口(Matlab/Explorer)之间进行更改更容易,那么数据分析就会更容易

一些历史

DDE是一种古老的技术(16位Windows,是的!),它使Windows应用程序能够相互通信。DDE已经从Windows XP上被取消,但它只是拒绝死亡

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

DDE如何帮助您

Matlab的DDE支持正式被否决。如果不是因为Explorer通过DDE消息与Matlab对话,它可能会完全消失

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

“文件夹”应用程序似乎是“progman”的同义词,progman是一个优秀的Windows 3程序管理器。您可以通过执行以下命令告诉资源管理器(“文件夹”)查看文件夹

ddeexec(channel, '[ViewFolder("%l", c:\windows, 5)]')
edit ddeinit
如果资源管理器已指向该文件夹,则不会打开新窗口。不幸的是,我不能告诉你更多关于这个命令。我不知道%l在那里做什么,也不知道5在那里做什么。我只知道ViewFolder可以替换为ExploreFolder,在这种情况下,您总是打开一个新窗口,该窗口总是在左窗格中显示文件夹树结构

更多信息

最重要的DDE相关函数是ddeinit、ddeexec和ddeterm。它们的文档隐藏在这些函数的.m文件中。只需执行以下命令,即可查看.m文件

ddeexec(channel, '[ViewFolder("%l", c:\windows, 5)]')
edit ddeinit

Yair Altman对Matlab的DDE功能进行了详细介绍。我不知道什么DDE命令是由Explorer编写的。我根据我的发现整理了我的例子。

嗯。。。这很难。我试着玩
'system(start c:\folder')
,因为在CMD提示符中执行
start
只会打开一个窗口。但是没有运气。它可以通过调用一些DDE魔法来工作,但实际上不可能找到关于它的信息,因为“DDE已经过时十多年了”。但在内部,windows到处都在使用它——例如,在执行
start
时……感谢您的详细回答!似乎我不能再使用相对路径了(这不是问题),我也没有发现如何像我问题中的示例那样预先选择给定的文件。这没什么大不了的,但如果有人找到更多的“ViewFolder”选项。。。告诉我们!此外,有时文件夹窗口会打开,但不会显示在其他窗口的顶部(只有任务栏浏览器图标闪烁)。这不是每次都会发生,我没有办法复制它。嗯。。。DDE对此任务可能太有限。我一直在试图弄清楚如何使用COM或.NET来做同样的事情,但我就是搞不清楚如何使用它们与文件资源管理器窗口对话。