有没有办法从对话框中获取IShellBrowser?
Is there a way to get IShellBrowser from a dialog?
我知道Windows公共对话框有一个IShellBrowser界面,它的类名是'SHELLDLL_DefView'。参考这个。
如何获取文件打开对话框的IShellBrowser界面? (文件打开对话框在外面,而不是我的应用程序。
这与我的问题相同,但是是德尔菲(? 我不知道德尔菲密码。如何以C++或MFC代码的形式解决此问题?
以下是德尔菲代码的 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();
}
您可能还想阅读以下文章,它提供了一种稍微更官方(即更可靠,但更复杂)的方式来获取给定HWND
的IShellBrowser
:
从资源管理器窗口查询信息
从 ShellWindows 对象开始,该对象表示所有打开的 shell 窗口。您可以使用 Item 属性枚举它们...从每个项目中,我们可以询问它的窗口句柄,看看它是否是我们想要的......好的,现在我们已经通过其
IWebBrowserApp
找到了该文件夹,我们需要进入顶部的shell浏览器。这是通过查询SID_STopLevelBrowser
服务并请求IShellBrowser
接口来完成的。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 数组长度,为什么从命令行获取时不能使用它?
- Boost Spirit,获取迭代器内部语义动作
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 具有默认值的引用获取函数
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 有没有办法从对话框中获取IShellBrowser?