【发布时间】:2014-05-28 15:29:21
【问题描述】:
我想以编程方式控制文件资源管理器窗口的状态(使用 Matlab)。具体来说,我想更改窗口状态(最小化、最大化、弹出到前台),更改当前查看的文件夹,并可能预选一个文件。
我知道我可以通过system 调用打开文件资源管理器,但我不想每次都打开一个新窗口。我也知道DDE 提供的limited control。但是 DDE 已经过时了,文档记录更差,而且 Matlab 对 COM 和 .NET 接口的支持比 DDE 更好。
文件资源管理器是否公开 COM 或 .NET 接口?如果是这样,我在哪里可以找到有关它们的信息?尤其是知道文件资源管理器的 PROGID 会有很大帮助。
我在网上搜索过,但 COM 和 .NET 不容易搜索 - 甚至在 Windows 开发人员搜索中也搜索不到(排名靠前的结果都是以 .com 和 .net 结尾的域...)
更新:
感谢目前提供的信息,我能够使用以下方法启动新的资源管理器窗口
h_s = actxserver('shell.application');
h_s.Explore('c:\Users')
但我看不出这将如何让我操纵资源管理器窗口。据我了解文档,shell.application 对象允许我与 shell 交互,而不是与文件资源管理器交互。我没有找到允许我更改所选文件的方法。另外,每次我拨打h.Explore(),都会打开一个新窗口。
作为替代方法,通过查看注册表(我在 HKEY_CLASSES_ROOT 中查找具有称为 CLSID 的“子键”的键),我找到了 Internet Explorer 的 progID,但导航到文件 URI 不起作用。相反,I windows 会打开一个 Internet Explorer 窗口和一个显示错误位置的新文件资源管理器窗口。
h_e = actxserver('InternetExplorer.Application')
h_e.Navigate('file:///C:/Users')
【问题讨论】:
-
你想做什么? Windows Shell 有许多界面(而且它们很容易搜索),但是否需要它们取决于您要做什么。
-
感谢您的链接!但据我了解,它们只是通过相应的 C++ 库和头文件提供的抽象层告诉我如何使用 COM。在这个抽象层下,progID 似乎是隐藏的——至少对我来说是这样!
-
你到底想做什么? “操纵资源管理器窗口”是什么意思?
标签: .net matlab com windows-explorer