我知道windows常用对话框有一个IShellBrowser接口,其类名是'SHELLDLL_DefView'。请参阅this。
如何获取文件打开对话框的IShellBrowser接口? (文件打开对话框在外面,而不是我的应用程序。)
This与我的问题相同,但是是delphi(?)ver。 我不知道delphi代码。如何解决这个问题的C ++或MFC代码?
答案 0 :(得分:1)
以下是Delphi代码的C / C ++翻译:
const UINT CWM_GETISHELLBROWSER = WM_USER + 7;
IShellBrowser *ShellBrowser = (IShellBrowser*) SendMessage(aDialog, CWM_GETISHELLBROWSER, 0, 0);
if (ShellBrowser) {
ShellBrowser->AddRef();
// use ShellBrowser as needed...
ShellBrowser->Release();
}
您可能还想阅读以下文章,该文章提供了更为官方(即更可靠但更复杂)的方式来获取给定IShellBrowser
的{{1}}:
Querying information from an Explorer window
从代表所有打开的shell窗口的the ShellWindows object开始。您可以使用the Item property枚举所有项目...从每个项目中,我们可以询问它的窗口句柄,看看它是否是我们想要的...好吧,现在我们找到了通过其
HWND
文件夹,我们需要访问顶级shell浏览器。这是通过查询IWebBrowserApp
服务并询问theIShellBrowser
interface来完成的。